1. 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。 java实现: 2.希尔排序(最小增量排序) (1)基本思想:算法先将要排序的一组数按某个 ...
分类:
编程语言 时间:
2016-07-08 15:20:04
阅读次数:
275
希尔排序 希尔排序:也叫作缩减增量排序,它通过比较相距一定间隔的元素来工作,各趟比较所用的距离随着算法的进行而缩小,直到只比较相邻元素的最后一趟排序为止。 希尔排序使用一个序列h1,h2,...,ht,叫做增量排序,在使用增量ht的一趟排序之后,对于每一个i我们都有a[i] ≤ a[i + ht], ...
分类:
编程语言 时间:
2016-05-31 13:44:47
阅读次数:
202
一,希尔排序算法介绍 ①希尔排序又称缩小增量排序 ,它本质上是一个插入排序算法。为什么呢? 因为,对于插入排序而言,插入排序是将当前待排序的元素与前面所有的元素比较,而希尔排序是将当前元素与前面增量位置上的元素进行比较,然后,再将该元素插入到合适位置。当一趟希尔排序完成后,处于增量位置上的元素是有序 ...
分类:
编程语言 时间:
2016-05-28 22:59:11
阅读次数:
175
希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进 ...
分类:
编程语言 时间:
2016-05-25 13:00:44
阅读次数:
148
插入排序分为:直接插入排序,二分插入排序(又称折半插入排序),链表插入排序,希尔排序(又称缩小增量排序)。属于稳定排序的一种(通俗地讲,就是两个相等的数不会交换位置)。在这里我具体讲直接插入排序和希尔排序。直接排序插入直接插入排序是由两层嵌套循环组成的。外..
分类:
编程语言 时间:
2016-05-22 18:40:12
阅读次数:
198
希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止 ...
分类:
编程语言 时间:
2016-05-19 13:15:37
阅读次数:
129
JAVA当中有以下几种常见排序算法:插入排序(直接插入排序、链表插入排序、分段/二分/折半插入排序、希尔排序/缩小增量排序)、冒泡排序、快速排序、简单选择排序、归并排序、二叉树排序、基数排序等。
(1)复杂度比较
表1 几种常见排序算法的复杂度
算法名称
平均情况
最好情况
最坏情况
辅助空间
直接...
分类:
编程语言 时间:
2016-05-18 19:48:41
阅读次数:
240
希尔排序 原理:希尔排序也称之为递减增量排序,它是对插入排序的改进。在插入排序中,我们知道,插入排序对于近似已排好序的序列来说,效率很高,可以达到线性排序的效率。但是插入排序效率也是比较低的,他一次只能将数据向前移一位。比如如果一个长度为N的序列,最小的元素如果恰巧在末尾,那么使用插入排序仍需一步一 ...
分类:
编程语言 时间:
2016-05-17 21:17:11
阅读次数:
292
一.希尔排序 希尔排序也被称为“缩小增量排序”,是一种效率更高的插入排序,步长为1时希尔排序就是插入排序。 原理:先将待排序的数组元素分成多个子序列(这些子序列是以相对步长为区分单位的,相隔步长相同的元素在同一个组中),使得每个子序列的元素个数相对较少,然后对各个子序列分别进行插入排序,待整个排序序 ...
分类:
编程语言 时间:
2016-05-15 02:01:17
阅读次数:
254
谢尔排序/缩减增量排序(C++) 谢尔排序/缩减增量排序: 他通过比较相距一定间隔的元素来工作,各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。(好复杂) 看了一下实现代码,你就会发现它与插入排序好像,只不过在外面套了件马甲。 通过下面的代码可以发现在插入排序的基础上套 ...
分类:
编程语言 时间:
2016-05-09 20:28:51
阅读次数:
200