线性时间排序算法
线性时间排序算法包括:计数排序、桶排序、基数排序
计数排序
- 辅助的两个数组:一个用来计数,一个用来输出最后排序的数组
- 时间复杂度:O(n)
- 应用:n个输入元素中的每一个都是在0到k区间内的一个整数
- 计数排序是稳定排序,具有相同值得元素在输出数组中的相对次序与它们在输入数组中的相对次序相同
c++实现
void CountingSort(const vector<int> &arr, vector<int> &output, int k){
vector<int> temp(k,0);
for(int i=0;i<arr.size();i++)
temp[arr[i]]=temp[arr[i]]+1;
for(int i=1;i<=k;i++)
temp[i]=temp[i]+temp[i-1];
for(