假设有一组长度为N的待排关键字序列K[1....n],首先将这个序列划分成M个的子区间(桶) 。然后基于某种映射函数,将待排序列的关键字k映射到第i个桶中(即桶数组B的下标 i),那么该关键字k就作为B[i]中的元素(每个桶B[i]都是一组大小为N/M的序列)。接着对每个桶B[i]中的所有元素进行比较排序(可以使用快排)。然后依次枚举输出B[0]....B[M]中的全部内容即是一个有序序列。 比如考试分数通常为0-100分,我们可以建立11个桶,然后确定映射函数f(k)=k/10。则分数49将定位到第4个桶中(49/10=4)。
void BucketSort(int *A,int size) BucketSort(A,10);
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++Grant推荐: ++不错的博客地址:http://blog.csdn.net/kay_sprint/article/category/851272 +
+
关注标签 1.Data Structure(54) 2. Algorithm
(79)
3. C++ Note
(21)
+
+++++++++++++++++++++++++++
Bucket_Sort and Radix_Sort
分类: Data Structure Algorithm
2011-08-22 17:16
51人阅读
评论(0)
收藏
举报
这个是原文地址 点此连接。
桶式排序 桶式排序的原理是:利用待排序序列元素的值作为新序列的索引进行插入,完成新序列的建立后,只需对新序列进行遍历即可完成排序(具体遍历过程和新序列元素的值有关) 假设有N个整数的序列,范围从0到M-1。现建立一个名为Count的桶序列,长度为M,并初始化为0。于是,Count有M个桶,开始时都是空的。对待排序序列进行遍历,当遍历至原序列元素Ai时,Count[Ai]增1。Count序列建立完毕后,对其进行遍历,遍历输出的不是Count序列元素的值,而是其索引,每个索引输出的次数由其对应元素的值决定,元素值为0则不输出 代码
桶式排序的局限性在于
基数排序
相比于桶式排序,基数排序仍只适用于元素值为整数的序列,但它的Count序列空间占用比桶式排序小得多
基数排序是桶式排序的推广,设待排序序列长度为M,取值范围为0到N^p-1,N即为基数,p为指数。对于基数排序,我们只需要一个长度为N的Count序列和p趟排序即可完成 我们进行p趟排序,每次以元素值的某一“位”(对基数N所取的位,基数为10时就是一般定义上的位)为关键字进行排序,每趟都是一次桶式排序,顺序必须是先从最低“位”开始排序,最后对最高“位”排序 根据上述分析,相比于桶式排序,基数排序有以下特性
代码
++++++++++++++++++++++++++++Grant推荐: ++不错的博客地址:http://blog.csdn.net/taesimple/article/category/783267 +
+
关注标签 1. Algorithm(14) 2. Linux
(26) 3. Shell
(13)
+
+++++++++++++++++++++++++++基数排序(radix sort)总结
分类: Algorithm
2011-07-18 20:41
86人阅读
评论(0)
收藏
举报
讨论基数排序之前,先来看名为“桶式排序”的方法 桶式排序 桶式排序的原理是:利用待排序序列元素的值作为新序列的索引进行插入,完成新序列的建立后,只需对新序列进行遍历即可完成排序(具体遍历过程和新序列元素的值有关) 假设有N个整数的序列,范围从0到M-1。现建立一个名为Count的桶序列,长度为M,并初始化为0。于是,Count有M个桶,开始时都是空的。对待排序序列进行遍历,当遍历至原序列元素Ai时,Count[Ai]增1。Count序列建立完毕后,对其进行遍历,遍历输出的不是Count序列元素的值,而是其索引,每个索引输出的次数由其对应元素的值决定,元素值为0则不输出 代码如下
基数排序
相比于桶式排序,基数排序仍只适用于元素值为整数的序列,但它的Count序列空间占用比桶式排序小得多
基数排序是桶式排序的推广,设待排序序列长度为M,取值范围为0到N^p-1,N即为基数,p为指数。对于基数排序,我们只需要一个长度为N的Count序列和p趟排序即可完成 我们进行p趟排序,每次以元素值的某一“位”(对基数N所取的位,基数为10时就是一般定义上的位)为关键字进行排序,每趟都是一次桶式排序,顺序必须是先从最低“位”开始排序,最后对最高“位”排序 对于”先低位,后高位“原则,作如下理解:低位的排序结果会影响两个高位相同元素的排序。譬如21和27,第一趟排序时,21所在桶位于27所在桶之前,因此第二趟排序时会先扫描到21。最终结果是,第二趟排序结束后21在27之前 根据上述分析,相比于桶式排序,基数排序有以下特性
代码如下(任意基数)
代码如下(以10为基数)
|
详细解决方案
桶排序(Bucket Sort),基数排序(Radix_Sort)
热度:56 发布时间:2024-01-11 09:29:55.0
2011-12-23 14:34
相关解决方案
- 用的aspnetpager分页存储过程,20000行,速度慢?而且无法 Sort?该如何解决
- Collections.sort()调用错误
- 一个简单的问题shell sort
- [求助]数字排序(selection sort)
- [求助] heap sort 排序算法(堆排序) problem
- [求助]基数排序
- connections.sort 步骤使用
- WEB服务器TCP: time wait bucket table overflow报错,排查初记
- JavaScript数组的高速克隆(slice()函数)和数组的排序、乱序和搜索(sort()函数)
- myArrray.sort(function(a,b){return a-b})是什么解决办法
- 请javascript高手解决一下这个array.sort 的有关问题
- 关于Collections.sort()重写的方法,小疑点,求支援
- Collections.sort 排序有关问题
- 有关泛型以及collections.sort()方法的有关问题
- jquery 的 sort 函数有关问题
- 请教org.springframework.data.domain.Sort,这个类要引用哪些包
- Array.sort()排序有关问题
- 怎样用Arrays.sort()函数排序一个类对象数组。该如何解决
- Collections 工具类中的 sort() 排序方法上的泛型定义有关问题
- c++ stl 中sort 和 java中 Arrays.sort()分别使用什么算法实现的,该如何解决
- Arrays.sort(arryOfInts);用解决方案
- 双重循环 和 Arrays.sort()+Arrays.binarySearch() 哪种方式效率高?解决方法
- 怎么实现类似于C里的int sort(int a[])的数组排序
- 研究java源代码:对于Arrays.sort
- Cannot sort a row of size 8096, which is greater than the allowable maximum of 8094.解决方案
- 快速排序(quick sort)
- 直接插入排序 (Straight Insertion Sort)
- 《Pro Oracle SQL》Chapter 三 - 3.3.2 Sort-Merge Joins
- Java中的HeapSpace要求-Arrays.sort()与Collections.sort()
- MongoDB查询集合中的文档 使用条件表达式 count sort skip limit