9 計數排序

2021-10-01 13:45:29 字數 708 閱讀 8002

計數排序是乙個類似於桶排序的排序演算法,其優勢是對已知數量範圍的陣列進行排序。它建立乙個長度為這個資料範圍的陣列c,c中每個元素記錄要排序陣列中對應記錄的出現次數。非原址排序。

(1)思路:

計數排序演算法的基本思想是對於給定的輸入序列中的每乙個元素x,確定該序列中值小於x的元素的個數。一旦有了這個資訊,就可以將x直接存放到最終的輸出序列的正確位置上。例如,如果輸入序列中只有17個元素的值小於x的值,則x可以直接存放在輸出序列的第18個位置上。

(2)複雜度分析:

(2.1)時間複雜度:   

平均情況: o(n)。

(2.2)空間複雜度:

o(n)。

(3)穩定性:

計數排序是穩定的。注意從後向前入桶。

**片段:

#include #define size 8

void count_sort(int* a,int* b,int len,int k);

int main()

,b[size];

count_sort(a, b, size, 5); //5:陣列元素最大值

return 0;

}void count_sort(int* a,int* b,int len,int k)

for(i=0;i=0;i--) //把資料依次裝入桶b,從後向前入桶保證計數排序穩定性

}

常用排序演算法總結9一一計數排序

計數排序 英語 counting sort 是一種穩定的線性時間排序演算法。計數排序使用乙個額外的陣列c,其中第i個元素是待排序陣列a中值等於i的元素的個數。然後根據陣列c來將a中的元素排到正確的位置。當輸入的元素是n個0到k之間的整數時,它的執行時間是o n k 計數排序不是比較排序,排序的速度快...

python計數排序 Python 計數排序

1.python coding utf 8 def counting sort a,b,k 計數排序,偽碼如下 counting sort a,b,k 1 for i 0 to k 初始化儲存區的值 2 do c i 0 3 for j 1 to length a 為各值計數 4 do c a j ...

排序 計數排序

資料結構和演算法系列目錄 不斷更新 計數排序是一種線性時間的排序,它的時間複雜程度為o n 雖然是線性的時間複雜程度,但是它的空間複雜程度比較高,而且用之前需要有乙個硬性的前提。這個前提在後面給出,這裡先來簡單介紹一下計數排序。計數排序是先掃瞄一邊待排序陣列,並用乙個輔助陣列記錄待排序每個元素應該在...