整理计数排序的程序
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void CountSort(vector<int> &vec, int max)
{
int len = vec.size();
if (len < 1)
return;
vector<int> count(max + 1, 0);
vector<int> tmp(vec);
for (auto x : vec)
{
count[x]++;
}
for (int i = 1; i <= max; ++i)
{
count[i] += count[i - 1];
}
for (int i = len - 1; i >= 0; --i)
{
vec[count[tmp[i]] - 1] = tmp[i];
count[tmp[i]]--;
}
}
int main()
{
vector<int> vec = { 1, 5, 3, 7, 6, 8, 12, 2, 5, 3, 1, 5, 2 };
int max = *max_element(vec.begin(), vec.end());
CountSort(vec, max);
for (auto &x : vec)
{
cout << x << " ";
}
system("pause");
return 0;
}