JavaScript計數排序演算法

antzone發表於2018-06-02

本章節簡單介紹一下計數排序的,下面是一段簡單的程式碼例項,有興趣的朋友可以自行分析一下,這裡就不多介紹了,只是簡單介紹一下實現原理,程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
function countSort(arr,min,max){
  var i,z=0,count=[];
  for (i=min;i<=max;i++){
    count[i] = 0;
  }  
  for(i=0;i<arr.length;i++){
    count[arr[i]]++;
  }
   
  for(i=min;i<=max;i++){
    while(count[i]-- >0){
      arr[z++]=i;
    }
  }
  return arr;
}
var i,arr=[];
for(i=0;i<100;i++){  
  arr.push(Math.floor(Math.random()*(30)));
}
console.log(countSort(arr,0,140));

實現原理簡單介紹:

(1).找出待排序的陣列中最大和最小的元素。

(2).統計陣列中每個值為i的元素出現的次數,存入陣列Count_arr的第i項。

(3).對所有的計數累加(從Count_arr中的第一個元素開始,每一項和前一項相加)。

(4).反向遍歷原陣列:將每個元素i放在新陣列的第Count_arr(i)項,每放一個元素就將Count_arr(i)減去1。

相關文章