排序算法——计数排序 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章