非比较排序——桶排序
来源:互联网 发布:php禁止某地区ip 编辑:程序博客网 时间:2024/06/04 04:47
相对于计数排序,桶排序和计数排序的差别就在于处理相同数据的差别上。计数排序假设输入数据都属于一个小区间内的整数,而桶排序则是假设输入是由一个随时过程产生的,该过程将元素均匀分布在[0, 1)区间上。
在桶排序的过程中有一个非常重要的地方就是,投射的位置 = current_data * number_array / maximum_array_scope , 如果出现多个数投射在相同的位置上,那么这里就和hash 处理冲突一样,补充一个链表,并且在链表中元素是有序的。
图解:
考虑到图片太大的问题,所以每一张图片都剪成了2张
一共生成30个随机数据,下一张图是和这张图相连的
经过映射之后的情况是:
最后只需要依次序输出即可。
#include <iostream>#include <list>#include <algorithm>#include <time.h>#include <string.h>#define MAX 1000#define N 30using namespace std;typedef list<int> LISTINT;int main(){LISTINT::iterator iter;int a[N];srand(time(NULL));for(int i =0;i < N; i++)a[i] = rand()%MAX;for(int i = 0;i < N; i++)cout << a[i] << " ";cout << endl;LISTINT *listAll = new LISTINT[N];int index[N];memset(index, 0, sizeof(index));for(int i = 0; i < N; i++){int temp = a[i]*N / MAX;if(index[temp]==0){index[temp] = 1;listAll[temp].push_back(a[i]);}else{listAll[temp].push_back(a[i]);listAll[temp].sort();}}for(int i = 0; i < N; i++){if(index[i] != 0)for(iter = listAll[i].begin(); iter != listAll[i].end(); ++iter)cout << *iter << " ";}cout << endl;delete(listAll);return 0;}
- 非比较排序——桶排序
- 非比较排序——计数排序
- 非比较排序—计数排序&基数排序
- 内部非比较排序---桶排序
- 非比较排序——计数排序和基数排序
- 非比较排序—计数排序和基数排序
- 计数排序 --非比较排序
- 非比较排序---【归并排序】
- 非比较排序 [Algorithm]
- 非比较排序
- 非比较排序
- 非比较排序
- 非比较排序
- 非比较排序
- 非比较排序学习
- 非比较排序算法
- 计数排序——O(n)复杂度基于非比较的排序方法
- 要学算法,排序应该是第一站吧 —— 非比较排序算法
- Hibernate many-to-many,many-to-one,inverse测试
- ApacheHttpServer+mod_perl实现防盗链
- Guava学习笔记
- 有关缓存
- [转载]eclipse.ini中配置参数 -Xms,-Xmx,-PerSize(JVM内存参数说明)
- 非比较排序——桶排序
- POJ 1562 Oil Deposits (HDU 1241 ZOJ 1562) DFS
- 有关代码复用
- 编写JSP自定义标签
- 有关WEB应用的安全性
- Spring中Bean继承注意事项
- Java NIO基本使用
- 官网转的 3D
- 负载均衡基础