基数排序 第11节 基数排序练习题 <!--more--> 对于一个int数组,请编写一个基数排序算法,对数组元素排序。 给定一个int数组A及数组的大小n,请返回排序后的数组。保证元素均小于等于2000。 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] Java (java ...
分类:
编程语言 时间:
2017-03-08 22:30:08
阅读次数:
179
理解了基数排序,也就理解了桶排序。 桶排序就是基数排序的一种优化,从MSD开始,即取最高位来排一次序,如果最高位没有重复(意味着没有冲突需要处理),是算法的最佳状态,O(n)。 如果有冲突,就将冲突的元素存放到对应的桶里(代码就是一个链表或者数组或者stl容器),然后对每个桶进行一次插入排序,平均情 ...
分类:
编程语言 时间:
2017-03-01 23:15:09
阅读次数:
323
计数,基数的中文读音都一样,这翻译的人还嫌我们计算机不够乱,真的想吐槽。 不管了,毕竟代码还是不一样的。 1、计数排序(counter sort): 通过一个上限来统计集合里的数值(或者其他非数值类型映射的数值),并累计比小于自己(包括)的数值的统计的个数,从而形成排序的索引(也就是前面有多少个小于 ...
分类:
编程语言 时间:
2017-02-28 22:54:20
阅读次数:
283
public class MySort { final int MAX=20; int num[]=new int[MAX]; { System.out.print("生成的随机数组是:"); for(int i=0;i<20;i++){ num[i]=(int)(Math.random()*100 ...
分类:
编程语言 时间:
2017-02-28 20:49:50
阅读次数:
225
转自:http://www.cnblogs.com/kaituorensheng/archive/2013/02/23/2923877.html 基本思想 假设数序列中小于元素a的个数为n,则直接把a放到第n+1个位置上。当存在几个相同的元素时要做适当的调整,因为不能把所有的元素放到同一个位置上。计 ...
分类:
编程语言 时间:
2017-02-27 19:06:56
阅读次数:
223
这篇文章主要介绍了Java如何实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序,分享给大家一起学习。 分类1)插入排序(直接插入排序、希尔排序)2)交换排序(冒泡排序、快速排序)3)选择排序(直接选择排序、堆排序)4)归并排序5)分配排序( ...
分类:
编程语言 时间:
2017-02-27 01:12:47
阅读次数:
372
首先说明 :后缀数组的构建在网上有多种方法:朴素的n*n*logn,还有倍增n*logn的,还有3*n的DC3算法,当然还有DC算法。这个算法学习自林厚丛老师的《高级数据结构》,代码较长,而且常数也比较大,但是是我这种笨人可以理解的。如有人想学短而快的可以学习《罗穗骞 后缀数组 处理字符串的有力工具 ...
分类:
编程语言 时间:
2017-02-21 19:19:00
阅读次数:
499
发现值域很小,而且怎么异或都不会超过1023……然后可以使用类似基数排序的思想,每次扫一遍就行了。 复杂度O(k*1024)。 ...
分类:
编程语言 时间:
2017-02-21 13:45:43
阅读次数:
359
据说是WC T2的子任务,ai<=2^32-1的基数排序,那么就把一个数分成几段多关键字基数排序就行了,类似后缀数组? 分成8位/8位/8位/8位比分成16位/16位要快【丧病的底层优化 代码如下: #include<iostream> #include<cstdio> #include<cstri ...
分类:
编程语言 时间:
2017-02-12 21:10:36
阅读次数:
220
地址 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 计数排序 桶排序 基数排序 ...
分类:
编程语言 时间:
2017-02-11 11:13:54
阅读次数:
170