เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลขและจัดเรียงโดยใช้อัลกอริทึมการเรียงลำดับการนับ
ถ้าเราทราบค่าสูงสุด เราก็สามารถใช้อัลกอริธึมการเรียงลำดับการนับเพื่อจัดเรียงอาร์เรย์ของ Numbers ในเวลาเชิงเส้นและปริภูมิได้ การใช้ค่าสูงสุดจะสร้างอาร์เรย์ที่มีขนาดดังกล่าวเพื่อนับการเกิดขึ้นของค่าดัชนีแต่ละค่า
จากนั้น เราจะแยกดัชนีทั้งหมดที่มีการนับที่ไม่ใช่ศูนย์ในอาร์เรย์ผลลัพธ์ของเรา
ก่อนอื่นเราจะใช้หนึ่งลูปเพื่อค้นหาองค์ประกอบที่ยิ่งใหญ่ที่สุดของอาร์เรย์ เมื่อเราได้แล้ว เราจะใช้การเรียงลำดับการนับเพื่อจัดเรียงอาร์เรย์
ตัวอย่าง
const arr = [4, 3, 1, 2, 3]; const findMaximum = arr => arr.reduce((acc, val) => val > acc ? val: acc, Number.MIN_VALUE) const countingSort = (arr = []) => { const max = findMaximum(arr); const counts = new Array(max + 1); counts.fill(0); arr.forEach(value => counts[value]++); const res = []; let resultIndex = 0; counts.forEach((count, index) => { for (let i = 0; i < count; i++) { res[resultIndex] = index; resultIndex++; }; }); return res; }; console.log(countingSort(arr));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
[ 1, 2, 3, 3, 4 ]