计数排序(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