java排序实现
文章平均质量分 84
android_rcccheng
这个作者很懒,什么都没留下…
展开
-
HashMap按照值排序--合并排序算法
package com.test.sort;import java.util.Arrays;import java.util.Comparator;import java.util.HashMap;import java.util.Map;import java.util.Set;/****具体排序算法可以参见java Arrays sort源码***/转载 2011-11-28 20:00:28 · 1770 阅读 · 0 评论 -
排序算法介绍
排序算法在计算机科学与数学中,一个排序算法(Sorting algorithm)是一种能将一串数据依照特定排序方式的一种算法。最常用到的排序方式是数值顺序以及字典顺序。有效的排序算法在一些算法(例如搜索算法与合并算法)中是重要的,如此这些算法才能得到正确解答。排序算法也用在处理文字数据以及产生人类可读的输出结果。基本上,排序算法的输出必须遵守下列两个原则:输出结果为递增串行(递增是针对所需转载 2011-12-12 20:17:29 · 888 阅读 · 0 评论 -
java归并排序
归并排序归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个转载 2011-12-08 20:10:10 · 1300 阅读 · 0 评论 -
java桶排序
桶式排序 桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将阵列分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。桶式转载 2011-12-12 15:28:14 · 3352 阅读 · 1 评论 -
java 快速排序
4.1.2 快速排序4.1.2.1基本概念快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。4.1.2.2使用场景原创 2011-12-07 15:59:52 · 2808 阅读 · 0 评论 -
堆排序
堆排序:堆积排序(Heapsort)是指利用堆积树(堆)这种资料结构所设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素。堆排序原理及分析起源 1991年计算机先驱奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德(Robert W.Floyd)和威廉姆斯(J.Williams)在1964年共同发明了著名的堆排序算法( Heap Sort )“堆”定义转载 2011-12-07 19:41:07 · 619 阅读 · 0 评论 -
Java 直接选择排序算法
Java 直接选择排序算法使用场景:它需要经过n-1趟比较。算法不稳定,O(1)的额外的空间,比较的时间复杂度为O(n^2),交换的时间复杂度为O(n),并不是自适应的。在大多数情况下都不推荐使用。只有在希望减少交换次数的情况下可以用。排序原理:选择排序算法的一般策略:搜索整个值列,以找到最小值。将该值与值列中第一个位置上的值进行交换。搜索剩下的值列(第一个除外),以找到其中的最小转载 2011-12-07 16:31:44 · 747 阅读 · 0 评论 -
希尔排序(Shell Sort)
希尔排序(Shell Sort)又叫做缩小增量排序(diminishing increment sort),是一种很优秀的排序法,算法本身不难理解,也很容易实现,而且它的速度很快。基本思想:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2该方法实质上是一种分组插入方法。转载 2011-11-30 22:47:29 · 426 阅读 · 0 评论 -
java插入排序
插入排序是一个对少量元素进行排序的有效算法。插入排序的工作机制与很多人打牌时,整理手中牌时的做法差不多。循环不变式与插入算法的正确性循环不变式主要用来帮组我们理解算法的正确性。对于循环不变式,必须证明它的三个性质:初始化: 它在循环的第一轮迭代开始之前,应该是正确的。保持: 如果在循环的某一次迭代开始之前它是正确的,那么,在下一次迭代开始之前,它也应该保持争取。终止: 当循环结原创 2011-11-30 21:38:07 · 7123 阅读 · 0 评论 -
折半插入排序
折半插入排序(binary insertion sort)是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法来加快寻找插入点的速度。 折半插入排序算法的具体操作为:在将一个新元素插入已排好序的数组的过程中,寻找插入点时,将待插入区域的首元素设置为a[low],末元转载 2011-11-30 22:07:12 · 711 阅读 · 0 评论 -
冒泡排序(包括局部冒泡排序)
冒泡排序(BubbleSort)的基本概念:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将原创 2011-12-06 10:02:20 · 1598 阅读 · 3 评论