您的位置:首页 > 编程语言 > C语言/C++

CountingSort -- 计数排序(C++)

2015-11-10 15:14 218 查看
    计数排序假设 n 个输入元素中的每一个都是在 [0,  k] 区间内的一个整数,其中 k 为某个整数,当 k = O(n)时,排序的运行时间为Θ(n)。代码如下:

void countingSort(vector<int> &arr, int k)
{
vector<int> c(k + 1, 0);
vector<int> tmpArr(arr);

for (auto x : tmpArr)
++c[x];

for (int i = 1; i < c.size(); ++i)
c[i] += c[i - 1];

for (int j = tmpArr.size() - 1; j >= 0; --j)
{
arr[c[tmpArr[j]] - 1] = tmpArr[j];
--c[tmpArr[j]];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息