希尔排序希尔排序的基本思想是:把待排序的数据元素分成若干个小组,对同一小组内的数据元素用直接插入法排序;小组的个数逐次缩小;当完成了所有数据元素都在一个组内的排序后排序过程结束。希尔排序又称作缩小增量排序。选择步长,对每个小的分组进行的直接插入排序。/**
*希..
分类:
编程语言 时间:
2015-09-14 12:28:10
阅读次数:
396
1.简介希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。2.算法实现原始的算法实现在最坏的情况下需要进行O(n2)的比较和交换。V. Pratt的书[1] 对算法进行了少量修改,可以使得性能提升至O(n log2 n)。这比最好的比较算法的O(n log ...
分类:
编程语言 时间:
2015-09-13 23:10:39
阅读次数:
327
一. 希尔排序的实质是分组插入排序,又称为缩小增量排序,是不稳定的排序,并且时效分析很难,因为增量选择的关系二. 思想:将数组按照增量分为若干个子序列分别进行直接插入排序,然后缩减该增量,直到增量等于1,此时该数组基本有序,对该数组进行一次直接插入排序,效率比直接插入高三. 例子 假设有十个数 .....
分类:
编程语言 时间:
2015-09-07 09:28:42
阅读次数:
164
冒泡排序:O(N^2)。输入对结果没有影响。
插入排序:最差O(N^2),最优O(N),平均O(N^2)。输入有影响,例如已排好序,则为O(N)。
选择排序:最差,最优,平均都是O(N^2)。输入对结果没有影响。
希尔排序:最差为o(Nlg^2N)。缩小增量排序。关键是如何选取这个增量序列。(一般,但不够好的选择是 k/2)。
堆排序:最差,最优,平均都是O(NlgN)。堆排序是所有下界排...
分类:
编程语言 时间:
2015-08-29 21:45:53
阅读次数:
192
谢尔排序的名称源于它的发明者Donald Shell,该算法石冲坡二次时间屏障的第一批算法之一,不过,知道它最初被发现的如干年后才证明了它的亚二次时间界。它通过比较相距一定时间间隔的元素来工作;各趟 比较所用的距离随着算法的进行而减小,知道只比较相邻元素的最后一趟排序为止。由于这个原因谢尔排序也叫作所见增量排序。
增量序列的一个流行的选择是使用Shell建议的序列:hi=[N/2]和hk=h...
分类:
编程语言 时间:
2015-08-28 00:53:31
阅读次数:
130
希尔排序Shellsort的名称源于它的发明者Donald Shell,该算法是冲破二次时间屏障的第一批算法之一,不过,直到它最初被发现的若干年后才证明了它的亚二次时间界。它通过比较相距一定间隔的元素来工作;各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。由于这个原因,希尔排序有时也叫做缩减增量排序(diminishing increment sort)。
...
分类:
编程语言 时间:
2015-08-20 22:39:28
阅读次数:
318
希尔排序介绍希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。希尔排序实质上是一种分组插入方法。它的基本思想是:对于n个待排序的数列,取一个小于n的整数gap(gap被称为步长)将待排序元素分成若干个组...
分类:
编程语言 时间:
2015-08-11 12:01:22
阅读次数:
144
基本思想
希尔排序是基于插入排序的,又叫缩小增量排序。
在插入排序中,标记符左边的元素是有序的,右边的是没有排过序的,这个算法取出标记符所指向的数据,存入一个临时变量,接着,在左边有序的数组中找到临时变量应该插入的位置,然后将插入位置之后的元素依次后移一位,最后插入临时变量中的数据。
试想,假如有一个很小的数据项在靠近右端的位置上,把这个数据项插入到有序数组中时,将会有大量的中间数据项需要右...
分类:
编程语言 时间:
2015-08-11 10:13:53
阅读次数:
156
希尔排序又称缩小增量排序
1、先取定一个小于n的整数gap1作为第一个增量,把整个序列分成gap1组。所有距离为gap1的倍数的元素放在同一组中,在各组内分别进行排序(分组内采用直接插入排序或其它基本方式的排序)。(一般gap1为n/2,一次往后类推:gap2=gap/2,若为奇数,则gap2=(gap1+1)/2 gap1=(n+1)/2)
2、然后取第二个增量gap2
3、依此类推...
分类:
编程语言 时间:
2015-08-01 17:21:25
阅读次数:
202
排序可分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,称为内排序;如果排序过程中需要使用外存,则成为外排序。
内排序有以下几类:
插入类排序:直接插入排序、二分法(折半)插入排序、希尔(缩小增量)排序
选择类排序:简单选择排序、堆排序
交换类排序:冒泡排序、快速排序、三路划分的快速排序
归并类排序:二路归并排序
基数类排序:MSD基数排序、LSD基数排序
各种内部排序算法的比较直接插入...
分类:
编程语言 时间:
2015-07-18 11:09:15
阅读次数:
165