计数排序与桶排序
来源:互联网 发布:网络小额贷款公司牌照 编辑:程序博客网 时间:2024/05/16 19:33
计数排序时间复杂度O(n),空间复杂度O(n)
计数排序的基本思想是:统计一个数序列中小于某个元素a的个数为n,则直接把该元素a放到第n+1个位置上。当然当过有几个元素相同时要做适当的调整,因为不能把所有的元素放到同一个位置上。计数排序假设输入的元素都是0到k之间的整数。
(1)统计数组中某个元素出现的个数k
(1)统计数组中小于等于某个元素a的个数n
(2)把元素a放到第n的位置,放置元素后要减1,因为当有几个元素相同时不能放到同意位置上
void countingSort(vector<int> &a){vector<int>::iterator it;it = max_element(a.begin(), a.end());vector<int> c(*it + 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] + c[i];vector<int> b(a.size(), 0);for(int i = 0; i < a.size(); i++){b[c[a[i]] - 1] = a[i];c[a[i]]--;}a.assign(b.begin(), b.end());}桶排序:
(1)统计数组中某个元素出现的个数k
(2)根据统计结果,若出现次数n大于0,则将n个该数添加到目的数组中
void countingSort(vector<int> &a){vector<int>::iterator it = max_element(a.begin(), a.end());vector<int> c(*it + 1, 0);for(int i = 0; i < a.size(); i++){c[a[i]]++;}vector<int> b;for(int i = 0; i < c.size(); i++){it = b.end();b.insert(it, c[i], i);}a.assign(b.begin(), b.end());}
0 0
- 计数排序与桶排序
- 计数排序、基数排序与桶排序
- 桶排序与基数排序、计数排序
- 常用排序算法之计数排序,基数排序与桶排序
- 排序算法(三):计数排序与桶排序
- 算法--计数排序与统计计数排序
- 计数与排序问题
- 基数排序与计数排序
- 桶排序与基数排序与计数基数排序
- 桶排序和计数排序
- 基数排序 计数排序 桶排序
- 基数排序、桶排序、计数排序
- 计数排序 桶排序 基数排序
- 计数排序和桶排序
- 计数排序、基数排序、桶排序
- JAVA 计数排序,桶排序
- 排序2------计数排序,桶排序
- 线性排序----计数排序, 基数排序, 桶排序
- 02-java数组
- linux安装java
- jquery 动态创建checkbox全选 反选
- android类库
- 经纬财富:乐平现货白银的杠杆交易技巧有哪些?
- 计数排序与桶排序
- pulsar 进一步了解
- unable to execute dex: multiple dex files Cocos2dxAccelerometer
- 【C语言复习(七)】编译过程的简介
- sql server和my sql 命令(语句)的区别,sql server与mysql的比较
- 【1】--《30天自制操作系统》读书笔记--0~3天
- 黑马程序员_OC封装
- Java Thread&Concurrency(7): 深入理解Callable/Future(FutureTask)接口及其实现
- 【新手教程】如何向App Store提交应用