算法分析:
希尔排序是一种按照增量排序的方法。其中增量值是小于n的正整数。
shell排序的基本思想[1]是:
先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2
可以根据下图形象理解:
(1)初始增量为3,该数组分为...
分类:
编程语言 时间:
2015-06-04 10:00:45
阅读次数:
193
编程实现希尔排序算法,按照非递减排序,测试数据为整数。
Description
第一行是待排序数据元素的个数n;
第二行是待排序的数据元素。
Input
一趟希尔排序后的结果。
Output
1
2
3
10
50 36 41 19 23 4 20 18 12 22
...
分类:
编程语言 时间:
2015-06-02 22:01:52
阅读次数:
161
算法说明希尔排序是插入排序的优化版。插入排序的最坏时间复杂度是O(n2),但如果要排序的数组是一个几乎有序的数列,那么会降低有效的减低时间复杂度。希尔排序的目的就是通过一个increment(增量)来对数列分组进行交换排序,最终使数列几乎有序,最后再执行插入排序,统计出结果。通过increment=...
分类:
编程语言 时间:
2015-03-18 07:48:05
阅读次数:
128
希尔排序算法 一、基本思想:分组增量插入方法,先取定一个小于 n 的整数 d1 作为第一个增量,把表的全部记录分成d1 个组,所有间距为d1 的倍数的记录放置在同一个组,再在各组内进行直接插入排序,依次类推,直至所取的增量 di=1,即将所有的记录都放置在同一个组中进行直接插入排序为止。 ...
分类:
编程语言 时间:
2015-03-05 23:35:41
阅读次数:
192
八大排序算法实现
插入排序算法实现
希尔排序算法实现
选择排序算法实现
冒泡排序算法实现
归并排序算法实现
快速排序算法实现
堆排序算法实现
基数排序算法实现...
分类:
编程语言 时间:
2015-02-15 15:11:43
阅读次数:
154
希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 希尔排序实质上是一种分组插入方法。它的基本思想是:对于n个待排序的数列,取一个小于n的整数gap(gap被称为步长)将待排序元素分成若干个组子序...
分类:
编程语言 时间:
2015-01-13 11:58:03
阅读次数:
202
稳定性:
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,
冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
复杂度
冒泡法: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。不说了。
直接插入排序:O(n*n)
希尔排序:算法的复杂度为n的1.2次幂
选择排序:O(n*n)
快速排序:不稳定,平均时间复杂度O(nlog...
分类:
编程语言 时间:
2015-01-10 01:09:47
阅读次数:
222
/* Date:2014.12.14
希尔排序思路:基于插入排序的思想。
流程:1).将有 n 个元素的数组分成 n/2 对,第1个数据和第(n/2 + 1)个数据为一对,依次配对;
2).一次循环使每一个序列对排好顺序;
3).再分为 n/4 对进行排序;
4).重复操作,随序列对数的减少最后变为1个,就完成了整个...
分类:
编程语言 时间:
2014-12-14 22:50:57
阅读次数:
261
思想简单描述:
在直接插入排序算法中,每次插入一个数,使有序序列只增加1个节点,并且对插入下一个数没有提供任何帮助。如果比较
相隔较远距离(称为增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。D.L.shell于
1959年在以他名字命名的排序算法中实现了这一思想。算法先将要排序的一组数按某个增量d分成若干组,每组中记录的
下标相差d.对每组中全部元素进行排序...
分类:
编程语言 时间:
2014-12-02 17:19:05
阅读次数:
196
各种排序方法的性能比较
排序方法
最好时间复杂度
平均时间复杂度
最坏时间复杂度
空间复杂度
稳定性
直接插入排序
O(n)
O(n2)
O(n2)
O(1)
稳定
简单选择排序
O(n2)
O(n2)
O(n2)
O(1)
不稳定
冒泡排序
O(n)
O(n2)
O(n2)
O(1)
稳定
希尔排序
-
...
分类:
编程语言 时间:
2014-11-29 20:15:57
阅读次数:
218