代码如下
计数排序和输入数据相关,因此代码意义不大
#include <iostream>
#include <array>
using std::array;
using std::cout;
using std::endl;
template <typename _Ty, size_t _N>
void count_sort(const array<_Ty, _N>& A, array<_Ty, _N>& B, int k)
{
_Ty* C = new _Ty[k + 1]{};
for (size_t i = 0; i < A.size(); i++)
C[A[i]]++;
for (size_t i = 1; i < k + 1; i++)
C[i] += C[i - 1];
for (size_t i = A.size() - 1; i != -1; i--) {
B[C[A[i]] - 1] = A[i];
C[A[i]] -= 1;
}
delete[] C;
}
int main()
{
array<int, 8> src{ 2,5,3,0,2,3,0,3 };
array<int, 8> res{};
count_sort(src, res, 6);
for (auto n : res)
cout << n << " ";
cout << endl;
}