排序算法——計數排序 Counting Sort

計數排序(Counting Sort)是一種非常簡單的排序算法,用來對一個序列進行排序,它也是基數排序的一個關鍵部分。這兩個算法都是Harold Seward發明的。

計數排序主要用於對元素值大於等於0的整數元素序列進行排序,也可以擴展到對負整數的元素序列的排序。

計數排序比普通的排序算法性能更好。例如,輸入{1, 3, 5, 2, 1, 4},用計數排序會輸出{1, 1, 2, 3, 4, 5}。

計數排序算法描述:

(1)初始化一個計數數組,大小是輸入數組中的最大的數。

(2)遍歷輸入數組,遇到一個數就在計數數組對應的位置上加一。例如:遇到5,就將計數數組第五個位置的值增1。

(3)把計數數組直接覆蓋到輸出數組(節約空間)。

 

輸入{3, 4, 3, 2, 1},最大是4,數組長度是5。

建立計數數組{0, 0, 0, 0}。

這樣就排好序了。

時間:O(n + k),n是輸入數組長度,k是最大的數的大小。

空間:O(n + k),n是輸入數組長度,k是最大的數的大小。

 

C實現

#include <stdio.h>
#include <string.h>
#define RANGE 255
 
// The main f
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章