#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>#include <vector>usingnamespacestd;
void CountSort(int* arr, int sz)
{
int max = arr[0];
int min = arr[0];
//遍历找到最大最小值for (int i = 0; i < sz; i++)
{
if (arr[i] > max)
max = arr[i];
if (arr[i] < min)
min = arr[i];
}
int len = max - min +1;
vector<int> tmp(len, 0);
for (int i = 0; i < sz; i++)
tmp[arr[i] - min]++;
//开始排序int index = 0;
for (int i = 0; i < tmp.size(); i++)
{
while (tmp[i]--)
arr[index++] = i + min;
}
}
int main()
{
int arr[] = { 1,5,5,7,2,11};
CountSort(arr,sizeof(arr)/sizeof(arr[0]));
system("pause");
return0;
}