排序
文章平均质量分 53
iteye_8466
这个作者很懒,什么都没留下…
展开
-
选择排序(java)
JAVA排序的代码网上很多的。找些易理解的。 选择排序十分容易理解。可以理解为有一个盘子,里面装着很多钻石,你可以从里面拿钻石,但一次只可以拿一颗。第一次你当然会拿最大的出来了,第二次你将拿剩下的钻石中最大的。 第一趟从0到n-1中找到最大的元素,假设为a[max],把a[max]与a[0]交换,这时a[0]是最大的了。第二趟从1到n-1中找到最大的元素(a[0]已经是有序...原创 2012-08-25 06:54:48 · 80 阅读 · 0 评论 -
POJ2092:计数排序,求第K大的元素
题目大意: 输入N和M,N就是N次测试,M是说每次测试产生的数据个数,数据范围在1-10000之间。现要求统计输出N次测试中数据出现次数第二多的所有数。当输入0,0时结束。样例:4 520 33 25 32 9932 86 99 25 1020 99 10 33 8619 33 74 99 323 62 34 67 36 79 93100 38 21 ...2012-12-27 08:31:01 · 221 阅读 · 0 评论 -
直接插入排序练习:POJ 2388
关于直接插入排序请参看:[url]http://128kj.iteye.com/blog/1662280[/url]POJ2388题意: 【输入】第一行为n,接下来n行分别为一个数; 【输出】这n个数排序后的中位数 样例: Sample Input 5 2 4 1 3 5 Sample Output 3 分析:好象用多...2012-12-26 09:42:31 · 160 阅读 · 0 评论 -
堆排序练习:POJ 2388
关于堆排序请参看:[url]http://128kj.iteye.com/blog/1679094[/url]POJ2388题意: 【输入】第一行为n,接下来n行分别为一个数; 【输出】这n个数排序后的中位数样例:Sample Input524135Sample Output3分析:好象用多种排序法都可以AC,这里先用堆排序,...2012-12-26 09:27:49 · 183 阅读 · 0 评论 -
堆排序的应用:从1亿条数据中从大到小取前10000条
堆排序的应用:从1亿条数据中从大到小取前10000条[code="java"]import java.util.Arrays; import java.util.Date; import java.util.Random; public class Top10000{ public static void main(String[] ar...原创 2012-09-20 22:17:56 · 154 阅读 · 0 评论 -
基数排序
基数排序可以说是扩展了的桶式排序,比如当待排序列在一个很大的范围内,比如0到999999内,那么用桶式排序是很浪费空间的。而基数排序把每个排序码拆成由d个排序码,比如任何一个6位数(不满六位前面补0)拆成6个排序码,分别是个位的,十位的,百位的。。。。排序时,分6次完成,每次按第i个排序码来排。下面举一个例子: 如果要对6个3位整数进行排序,你会怎么做?我猜想大多数...原创 2012-09-19 10:18:51 · 85 阅读 · 0 评论 -
非基于比较的排序:桶排序
我们最常用的快速排序和堆排序等算法需要对序列中的数据进行比较,因为被称为基于比较的排序。 而非基于比较的排序有计数排序,桶排序,和在此基础上的基数排序。要注意的是,非基于比较的排序算法的使用都是有条件限制的,例如元素的大小限制。假设待排序数据是一个随机过程产生,该过程将元素一致地分布在某区间上。 桶排序的思想就是把区间划分成n个相同大小的子区间,或称桶,然后将...原创 2012-09-18 21:51:28 · 147 阅读 · 0 评论 -
容易理解的堆排序代码(JAVA)
[img]http://dl.iteye.com/upload/attachment/0073/8651/3b08ab7e-4b41-3683-85f7-197fb55bb8bf.gif[/img][img]http://dl.iteye.com/upload/attachment/0073/8653/277f3691-df80-3e48-8f66-ada80a662929.gif[/img]...原创 2012-09-15 14:54:47 · 104 阅读 · 0 评论 -
冒泡排序
从0到n-1,两两比较数组中的元素,如果前者大于后者,则交换之(如a[0]>a[1],则交换a[0]和a[1])。作一趟冒泡排序后,最大值就在最后一个位置a[n-1]上了。然后对余下的0到n-2个元素作第二趟冒泡排序,次最大值就去到倒数第二个位置a[n-2]上了,如此类推。 例如对10,-3,5,34,-34,5,0,9进行排序 第一趟:-3,5,10,-34,5,0,9,34...原创 2012-09-15 07:36:06 · 146 阅读 · 0 评论 -
快速排序(java)
快速排序是典型的使用分治策略的一种交换排序.一般步骤:1)选择一个枢纽元素(关键点);2)使用该枢纽元素分割数组,使得比该元素小的元素在它的左边,比它大的在右边。并把枢纽元素放在合适的位置;3)根据枢纽元素最后确定的位置,把数组分成三部分,左边的,右边的,枢纽元素自己,对左边的,右边的分别递归调用快速排序算法即可。 由于关键点是用来比较的基准所以如果基准选择得当可以减少...原创 2012-09-03 07:09:25 · 105 阅读 · 0 评论 -
归并排序(JAVA)
并归排序: 将两个或两个以上的有序数组组合成一个新的有序数组,叫并归排序排序过程1、 设初始数组有n个数据,则可看成n个有序的子数组, 每个子数组长度为1;2、 两两合并,得到n/2或n/2+1 个长度为2 或1 的有序子数组; 3、 再两两合并,…… 如此重复,直至得到一个长度为n 的有序数组为止。下面是归并排序的一个简单的例子:初始值 【49】 【38】...原创 2012-08-27 10:45:41 · 86 阅读 · 0 评论 -
希尔排序(java)
网上代码很多的,找个易理解的学习。 基本思想:希尔排序把n个元素按一定的间隔分成几组,然后按组为单位进行插入排序。 。 将待排记录序列以一定的增量间隔h 分割成多个子序列,对每个子序列分别进行一趟直接插入排序, 然后逐步减小分组的步长h ,对于每一个步长h 下的各个子序列进行同样方法的排序,直到步长为1 时再进行一次整体插入排序。 因为不管记录序列多么庞大,关键字多么混...原创 2012-08-25 07:43:53 · 95 阅读 · 0 评论 -
插入排序(JAVA)
网上的代码太多了,找些易理解的。 我们把数组分为已排序和未排序两部分,把未排序的元素一次一个插入到已排序部分的合适位置上。已排序部分逐渐增大,直到整个数组变成有序的。 下面通过一个例子来说明这个排序流程: 待排序列: 49, 38 , 65 , 97, 76 , 13, 27 ,49 插入49: 49 插入38: 38,...原创 2012-08-25 07:28:31 · 83 阅读 · 0 评论 -
排序练习题
一、选择题1、以下序列不是堆的是 D 。 A、(100,85,98,77,80,60,82,40,20,10,66) B、(100,98,85,82,80,77,66,60,40,20,10) C、(10,20,40,60,66,77,80,82,85,98,100) D、(100,85,40,77,80,60,6...原创 2012-12-27 16:46:09 · 639 阅读 · 0 评论