计数排序
来源:互联网 发布:java如何进行异常处理 编辑:程序博客网 时间:2024/04/30 06:53
在已知待排序的元素范围为0-k之间时,可使用计数排序。当k=O(n)时,此时运行时间为Θ(n)。思路是:记录对应元素出现的次数,则可以推算出改元素在排序后中的数组的下标。
void counting_sort(vector<int>& A, vector<int>& B, int k){ vector<int> C(k + 1, 0); for (int i = 0; i < A.size(); i++) C[A[i]]++; for (int i = 1; i < C.size(); i++) C[i] += C[i - 1]; for (int i = A.size() - 1; i >= 0; i--){ B[C[A[i]]-1] = A[i]; C[A[i]]--; }}int main(){ srand(time(0)); vector<int> nums(10); for (int i = 0; i < nums.size(); i++){ nums[i] = rand() % 20; } for (auto val : nums) cout << val << " "; cout << endl; vector<int> B(10); counting_sort(nums, B, 20); cout << "counting-sort: " << endl; for (auto val : B) cout << val << " "; cout << endl; return 0;}
0 0
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- OpenVPN连接后内网ping不通
- yield from
- hadoop单机环境搭建
- leetcode: Excel Sheet Column Title
- DIV重叠 CSS让DIV层叠 两个DIV或多个DIV顺序重叠加
- 计数排序
- iOS编程(3)NavigationController
- [jvm解析系列][十]类加载器和双亲委派模型,你真的了解ClassLoader吗?
- Spark定制班第22课:Spark Streaming架构源码图解
- [朝花夕拾]基于C#的模拟仿真平台设计(部分)及服务器异步通信代码
- 第十六周阅读项目-8
- NC开发中 一些bug总结
- vc精确控制时间
- JZOJ.3431【GDOI2014模拟】网格 解题报告