计数排序
代码:
#include<iostream>
#include<vector>
using namespace std;
vector<int> counting_sort(vector<int> array, int k);
int main()
{
vector<int> output;
vector<int> buff = { 5, 2, 1, 4, 9, 6, 0 };
for each (int i in buff)
{
cout << i ;
}
cout << endl;
output=counting_sort(buff, 10);
for each (int i in output)
{
cout << i ;
}
cout << endl;
return 0;
}
vector<int> counting_sort(vector<int> array, int k) //k表示数组中最大元素,output为输出
{
vector<int> temp(k + 1, 0);//临时数组,存放个数
vector<int> output(array.size(), 0);//初始化输出
for (int i = 0; i < array.size(); i++) {
temp[array[i]] += 1; //计算次数
}
for (int i = 1; i < temp.size(); i++)
{
temp[i] += temp[i - 1]; //计算个数
}
for (int i = array.size() - 1; i >= 0; i--)
{
output[temp[array[i]] - 1] = array[i]; //放到对应位置上
temp[array[i]] -= 1; //个数剪1
}
return output;
}
结果: