希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止 ...
分类:
编程语言 时间:
2016-05-19 13:15:37
阅读次数:
129
JAVA当中有以下几种常见排序算法:插入排序(直接插入排序、链表插入排序、分段/二分/折半插入排序、希尔排序/缩小增量排序)、冒泡排序、快速排序、简单选择排序、归并排序、二叉树排序、基数排序等。
(1)复杂度比较
表1 几种常见排序算法的复杂度
算法名称
平均情况
最好情况
最坏情况
辅助空间
直接...
分类:
编程语言 时间:
2016-05-18 19:48:41
阅读次数:
240
[内排序和外排序]内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序期间全部对象太多,不能同时存放在内存中,必须根据排序过程的要求,不断在内,外存间移动的排序。根据排序元素所在位置的不同,排序分: 内排序和外排序。内排序:在排序过程中,所有元素调到内存中进行的排序,称为内排序。内排序是排序的基础。内排序效率用比较次数来衡量。按所用策略不同,内排序又可分为插入排序(直接插入排序和希尔...
分类:
编程语言 时间:
2016-05-18 18:51:16
阅读次数:
202
这篇博客主要实现一些常见的排序算法。例如:
//冒泡排序
//选择排序
//简单插入排序
//折半插入排序
//希尔排序
//归并排序
//双向的快速排序
//单向的快速排序
//堆排序对于各个算法的实现原理,这里不再多说了,代码中注释较多,结合注释应该都能理解算法的原理,读者也可自己google一下。另外,注释中有很多点,比如边界条件、应用场景等已经用 * 标记,* 越多,越应...
分类:
编程语言 时间:
2016-05-18 18:37:48
阅读次数:
257
希尔排序 原理:希尔排序也称之为递减增量排序,它是对插入排序的改进。在插入排序中,我们知道,插入排序对于近似已排好序的序列来说,效率很高,可以达到线性排序的效率。但是插入排序效率也是比较低的,他一次只能将数据向前移一位。比如如果一个长度为N的序列,最小的元素如果恰巧在末尾,那么使用插入排序仍需一步一 ...
分类:
编程语言 时间:
2016-05-17 21:17:11
阅读次数:
292
一、直接插入排序它的思想:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。下面我来说一下我的思路:1.第一趟比较前两个数,然后把第二个数按大小插入到有序表中。2.第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表..
分类:
编程语言 时间:
2016-05-17 01:05:50
阅读次数:
347
对于一个int数组,请编写一个希尔排序算法,对数组元素排序。 给定一个int数组A及数组的大小n,请返回排序后的数组。保证元素小于等于2000。 测试样例: 代码: ...
分类:
编程语言 时间:
2016-05-16 20:01:07
阅读次数:
177