想了一晚上没想明白,上网搜了别人的答案。。。研究了好几个晚上才觉得有点明悟了。。。 下面是详细思考的过程:(参考答案) class Solution {
public: // 用桶排序 // 算出相邻两个桶之间的最大差值 // 如果是平均分布,则桶的数目和元素的数目相同时,其排序的时间复杂度是0(n...
分类:
其他好文 时间:
2014-12-22 22:45:04
阅读次数:
178
不是自己亲自去做,永远都不会知道这其中的难处~...
分类:
编程语言 时间:
2014-12-22 14:29:52
阅读次数:
159
这里是地址 http://de.visualgo.net/7VisuAlgo开始训练!这是中文的网站http://visualgo.net.请参阅本文更多详情..VisuAlgo.net数据结构和算法动态可视化 (Chinese)排序冒泡选择插入归并快速随机快速选择插入计数基数排序cs2020cs1...
分类:
编程语言 时间:
2014-12-18 11:50:35
阅读次数:
472
实现基数排序的方式有多种,但思维是一样的,可以用数组来模拟桶的操作。还是那句话,不是自己亲自敲出来,永远都不知道它的难度。...
分类:
编程语言 时间:
2014-12-17 18:36:51
阅读次数:
209
经典排序算法 - 桶排序Bucket sort
补充说明三点
1,桶排序是稳定的
2,桶排序是常见排序里最快的一种,比快排还要快…大多数情况下
3,桶排序非常快,但是同时也非常耗空间,基本上是最耗空间的一种排序算法
我自己的理解哈,可能与网上说的有一些出入,大体都是同样的原理
无序数组有个要求,就是成员隶属于固定(有限的)的区间,如范围为[0-9](考试分数为1-100等)
...
分类:
编程语言 时间:
2014-12-16 13:36:50
阅读次数:
260
经典排序算法 - 鸽巢排序Pigeonhole sort
原理类似桶排序,同样需要一个很大的鸽巢[桶排序里管这个叫桶,名字无所谓了]
鸽巢其实就是数组啦,数组的索引位置就表示值,该索引位置的值表示出现次数,如果全部为1次或0次那就是桶排序
例如
var pigeonHole = new int[100];
pigeonHole[0]的值表示0的出现次数...
pigeonHole[1]...
分类:
编程语言 时间:
2014-12-16 13:36:29
阅读次数:
188
经典排序算法 - 基数排序Radix sort
原理类似桶排序,这里总是需要10个桶,多次使用
首先以个位数的值进行装桶,即个位数为1则放入1号桶,为9则放入9号桶,暂时忽视十位数
例如
待排序数组[62,14,59,88,16]简单点五个数字
分配10个桶,桶编号为0-9,以个位数数字为桶编号依次入桶,变成下边这样
| 0 | 0 | 62 | 0 | 14 | 0 ...
分类:
编程语言 时间:
2014-12-16 13:35:28
阅读次数:
187
经典排序算法 - 计数排序Counting sort
注意与基数排序区分,这是两个不同的排序
计数排序的过程类似小学选班干部的过程,如某某人10票,作者9票,那某某人是班长,作者是副班长
大体分两部分,第一部分是拉选票和投票,第二部分是根据你的票数入桶
看下具体的过程,一共需要三个数组,分别是待排数组,票箱数组,和桶数组
var unsorted = new int[] { 6, 2, ...
分类:
编程语言 时间:
2014-12-16 13:34:36
阅读次数:
165
经典排序算法 - Proxmap Sort
这个排序是桶排序和基数排序的改进,理解了前两者,这个排序很容易理解
先回忆下桶排序是怎么回事,它与桶的区别在于入桶规则,桶排序里是1入1号桶,2入2号桶
这个排序把数字分区了,然后给出一个所谓的键,例如它规定0-9都入0号桶
10-19都入1号桶,这样桶覆盖的范围将增大10倍,这在某种情况下是很有用的
有了桶排的基础后,再看下边两张图就什么都明...
分类:
编程语言 时间:
2014-12-16 13:32:39
阅读次数:
157