Java 排序
v墨竹v
个人独立博客:http://blog.mozhu.org
展开
-
Java排序算法(三):堆排序
堆积排序(Heapsort)是指利用堆积树(堆)这种资料结构所设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素。堆排序是不稳定的排序方法,辅助空间为O(1), 最坏时间复杂度为O(nlog2n) ,堆排序的堆序的平均性能较接近于最坏性能。 堆排序利原创 2011-07-04 23:56:19 · 40548 阅读 · 16 评论 -
Java排序算法(八):希尔排序(Shell排序)
Java排序算法(八):希尔排序(Shell排序)希尔排序(缩小增量法) 属于插入类排序,由Shell提出,希尔排序对直接插入排序进行了简单的改进:它通过加大插入排序中元素之间的间隔,并在这些有间隔的元素中进行插入排序,从而使数据项大跨度地移动,当这些数据项排过一趟序之后,希尔排原创 2011-07-07 22:41:42 · 14452 阅读 · 9 评论 -
Java排序算法(五):快速排序
Java排序算法(五):快速排序快速排序是一个速度非常快的交换排序算法,它的基本思路很简单,从待排的数据序列中任取一个数据(如第一个数据)作为分界值,所有比它小的数据元素放到左边,所有比它大的数据元素放到它的右边。经过这样一趟下来,该序列形成左右两个子序列,左原创 2011-07-05 22:32:23 · 4129 阅读 · 1 评论 -
Java排序算法(十一):基数排序
Java排序算法(十一):基数排序基数排序已经不再是一种常规的排序方式,它更多地像一种排序方法的应用,基数排序必须依赖于另外的排序方法。基数排序的总体思路就是将待排序数据拆分成多个关键字进行排序,也就是说,基数排序的实质是多关键字排序。多关键字排序的思路是将待排数据里德排序关键字原创 2011-07-10 16:19:38 · 15765 阅读 · 2 评论 -
Java排序算法(一):概述
Java排序算法(一):概述排序是程序开发中一种非常常见的操作,对一组任意的数据元素(或记录)经过排序操作后,就可以把他们变成一组按关键字排序的有序队列。对一个排序算法来说,一般从下面3个方面来衡量算法的优劣:时间复杂度:它主要是分析关键字的比较次数和记录的移原创 2011-07-04 22:14:08 · 2487 阅读 · 0 评论 -
Java排序算法(十):桶式排序
Java排序算法(十):桶式排序桶式排序不再是一种基于比较的排序方法,它是一种比较巧妙的排序方式,但这种排序方式需要待排序的序列满足以下两个特征:待排序列所有的值处于一个可枚举的范围之类;待排序列所在的这个可枚举的范围不应该太大,否则排序开销太大。排序的具体步骤如下:(1)对于这原创 2011-07-10 15:26:40 · 6855 阅读 · 6 评论 -
Java排序算法(十三):补充-洗牌算法
Java排序算法(十三):补充-洗牌算法这个算法的要求是这样的:将N个数乱序后输出.由于和扑克牌的洗牌过程比较相似所以我也就称为洗牌算法了.很多地方都不自觉的需要这个算法的支持.也可以将这个算法扩展为从N个数中取出M个不重复的数(0思路:有n个数据的数据列,从第一个元素开始,随机原创 2011-07-10 23:39:15 · 8420 阅读 · 3 评论 -
Java排序算法(六):直接插入排序
直接插入排序的基本操作就是将待排序的数据元素按其关键字值的大小插入到前面的有序序列中。算法描述对一个有n个元素的数据序列,排序需要进行n-1趟插入操作:第1趟插入,将第2个元素插入前面的有序子序列--此时前面只有一个元素,当然是有序的。第2趟插原创 2011-07-05 23:11:20 · 4071 阅读 · 0 评论 -
Java排序算法(九):归并排序
Java排序算法(九):归并排序 归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide a原创 2011-07-08 00:25:41 · 65336 阅读 · 6 评论 -
Java排序算法(七):折半插入排序
Java排序算法(七):折半插入排序折半插入排序法,又称二分插入排序法,是直接插入排序法的改良版,不同之处在于,第i趟插入,先找出第i个元素应该插入的的位置,假定前1~i-1个数据是已经处于有序状态。代码实现:package sort;public class Binar原创 2011-07-06 21:10:21 · 9448 阅读 · 2 评论 -
Java排序算法(四):冒泡排序
Java排序算法(四):冒泡排序冒泡排序是计算机的一种排序方法,它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出代码;2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺原创 2011-07-05 00:58:27 · 3387 阅读 · 0 评论 -
Java排序算法(十二):总结
Java排序算法(十二):总结前面讲了10种基本的排序算法,现在来作下总结,基于下面几个方面来比较各个排序算法的优劣:时间复杂度,空间复杂度,稳定性,适用场景原创 2011-07-10 16:22:19 · 3048 阅读 · 0 评论