计数排序
来源:互联网 发布:php 访问sqlserver 编辑:程序博客网 时间:2024/06/01 17:59
计数排序思想
经典的排序算法都是基于元素之间的比较来确定元素的最终排序位置的,导致经典排序算法的时间复杂度的下界是
计数排序是非比较排序,它的思想是:对于1个待排序元素
复杂度
- 时间复杂度:
计数排序的时间复杂度是O(n+k) , 所以当k < n的时候或者n与k在同一个数量级的时候,计数排序的时间复杂度是线性的O(n) - 空间复杂度:
计数排序空间复杂度是O(n+k) , 当k < n或者n与k在同一个数量级的时候,计数排序的空间复杂度是线性的O(n)
计数排序是稳定的
代码如下
//k是待排序数组中的最大值void count_sort(vector<int> arr, int k){ vector<int> B(arr.size()); vector<int> C(k+1, 0); for(int i=0; i<arr.size(); i++) C[arr[i]] += 1; for(int j=1; j<=k; j++) C[j] += C[j-1]; //之所以要从后向前扫描,是因为这样可以保持排序稳定性 for(int i=arr.size()-1; i>=0; i--){ B[C[arr[i]]-1] = arr[i]; C[arr[i]]--; } print(B, B.size());}
0 0
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- 计数排序
- commons-csv读写CSV文件
- [学习笔记]window.showModalDialog窗口跳转取值
- PullToRefresh使用详解--构建下拉刷新的listView
- 【天道酬勤】 腾讯、百度、网易游戏、华为Offer及笔经面经
- [学习笔记]File类简单用法!
- 计数排序
- PHP表单处理
- 为什么尽量以const,enum,inline替换#define?
- [学习笔记]打印出该月的日期表格,日历形式
- AndroidStudio上github使用
- 2016SDAU编程练习二1001
- 和同事相处的30个原则(受益)
- [学习笔记]多维数组
- [学习笔记] JAVA菜鸟入门篇-JDK安装以及配置