Counting Sort (Sayarak Sıralama), elemanların dizideki frekanslarını (kaç kez geçtiğini) sayarak çalışan, karşılaştırma yapmayan bir sıralama algoritmasıdır. Harold H. Seward tarafından 1954 yılında geliştirilmiştir. ## Çalışma Prensibi: 1. **Frekans Sayma**: Her bir değerin kaç kez tekrarlandığı sayılır. 2. **Kümülatif Toplam**: Her elemanın dizideki tam konumunu belirlemek için kümülatif frekans hesaplanır. 3. **Kararlı Yerleştirme**: Orijinal dizi sondan başa taranarak elemanlar nihai dizideki doğru yerlerine yerleştirilir.
1function countingSort(arr) {2 const result = [...arr];3 if (result.length === 0) return result;4 5 const max = Math.max(...result);6 const count = new Array(max + 1).fill(0);7 8 for (let i = 0; i < result.length; i++) {9 count[result[i]]++;10 }11 12 for (let i = 1; i < count.length; i++) {13 count[i] += count[i - 1];14 }15 16 const output = new Array(result.length);17 for (let i = result.length - 1; i >= 0; i--) {18 output[count[result[i]] - 1] = result[i];19 count[result[i]]--;20 }21 22 for (let i = 0; i < result.length; i++) {23 result[i] = output[i];24 }25 return result;26}Verdiğiniz pozitif tamsayı dizisi Counting Sort ile sıralanacaktır.
Counting Sort, sınırlı aralıktaki tam sayılar için O(n+k) lineer süre ile mükemmel verim sunar.