下文外链接中,来自希尔排序希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。其实所谓的增量就是从第一个数字开始之后加上增量互相比较。比如增量为5时,第一个和第六个比较,第二个和第七个比较,然后得出的排序再次比较。增量为3时,第一个和第四个和第七个比较,... ...
分类:
编程语言 时间:
2017-12-10 15:56:47
阅读次数:
184
经过前面五篇排序方法的介绍,我们了解到了递归思想以及分而治之的归并和快速排序,当然也涉及到了比较简单易懂的数据值传递冒泡,选择,以及插入排序。可以说每一种排序方式都各有千秋,都适合在不同的环境下进行使用,但是我们有时会不会思考一个问题,那就是我们在学习插入排序的时候的主题思想是将每一个数据取出来,然 ...
分类:
编程语言 时间:
2017-12-05 01:03:49
阅读次数:
203
当数组基本有序时,插入排序法效率很高,而希尔排序法就是充分利用插入排序法这一特长的高速算法。希尔排序法中,程序会重复进行以间隔为g的元素为对象的插入排序。 设g的集合为G,集合G中的数一般是降序排列,最后一个数必须为1。具体流程如下: 对集合G中的每一个g,执行如下操作: 1. 将数组中以g为间隔的 ...
分类:
编程语言 时间:
2017-11-30 11:57:59
阅读次数:
187
希尔排序图解:时间复杂度O(nlog2n),空间复杂度O(1) 数组:[243, 5, 7, 22, 3, 11] 核心代码实现: ...
分类:
编程语言 时间:
2017-11-29 16:14:06
阅读次数:
257
在介绍了前面的三种基本算法之后,今天说说另一种稍微高级一点的算法--希尔排序 希尔排序是按照其设计折希尔(Donald Shell)的名字命令,它基于插入算法,在插入算法上做了改造,那么插入算法有什么特点呢,我们回想一下: 1. 插入排序在已经排好序的序列上效率非常高,时间复杂度O(n),但是在最坏 ...
分类:
编程语言 时间:
2017-11-29 11:31:47
阅读次数:
194
各类排序算法的时间复杂度 排序算法概述: 排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。 内排序可以分为以下几类: (1)、插入排序:直接插入排序、二分法插入排序、希尔排序。 (2)、选 ...
分类:
编程语言 时间:
2017-11-28 11:43:16
阅读次数:
161
1.冒泡排序 2.选择排序 3.插入排序 4.希尔排序 5.快排 6.归并排序 ...
分类:
编程语言 时间:
2017-11-28 01:46:11
阅读次数:
222
独白: 希尔排序是经过优化的插入排序算法,之前所学的排序在空间上都是使用列表本身。而归并排序是利用增加新的空间,来换取时间复杂度的减少。这俩者理念完全不一样,注定造成的所消耗的时间不同以及空间上的不同。 归并排序涉及到递归的使用,需要理解其中精髓才能更好了解归并排序,以及其他应用到递归的算法。理解其 ...
分类:
编程语言 时间:
2017-11-25 21:43:20
阅读次数:
163