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

来源:互联网 发布:手机淘宝爱逛街不见了 编辑:程序博客网 时间:2024/05/18 11:49

    计数排序假设 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]]; }}

0 0