知识点:排序 在C语言中,对一组数据进行排序有多种方法:交换排序、选择排序、冒泡排序、插入排序、归并排序、快速排序以及希尔排序等 其中冒泡排序和交换排序比较简单,交换排序是又是选择排序的基础。以下这个例子包含几种排序方法,以对分数降序排序为背景,使用链表,顺便填补对链表中数据排序的空白。 ...
分类:
其他好文 时间:
2018-01-28 11:21:17
阅读次数:
158
希尔排序法是针对于直接插入法的优化。 希尔排序里面有一个增量d,最后一个增量值必须等于1 , 下面是两种实现方法: 程序里面的增量,最好的一种情况,大家一致在寻找,但是现阶段d = d/3+1 是比较好的。 里面虽然有三个for 循环,但是 时间复杂度 ...
分类:
编程语言 时间:
2018-01-27 22:15:09
阅读次数:
223
1.2 希尔排序 希尔排序属于插入排序的一种,是直接插入排序的优化,其主要思想是:由于在序列基本有序的情况下,直接插入排序的效率很高,那么,我们引入一个增量incre,把以incre为间隔的元素做一次直接插入排序,使其基本有序;随后,incre慢慢减小,继续做上述直接插入排序,最后incre变成1, ...
分类:
编程语言 时间:
2018-01-26 22:52:10
阅读次数:
210
知识点总结报告 知识点: 插入排序 (原理)每次将一个待排序的元素按其关键字大小插入到前面已经排好序的子表中的适当位置,直到全部元素插入完成为止。主要有三种排序方法直接插入排序,折半插入排序,希尔排序。 直接插入排序 将当前无序区的开头元素R[i](1<=i<=n-1)插入到有序区R[0...i-1 ...
分类:
编程语言 时间:
2018-01-24 22:05:12
阅读次数:
182
【希尔排序】:也叫做递减增量排序算法,在插入排序算法的基础上做了改进。 希尔排序最开始将列表按照一定的步长(即增量)分成多个子序列,多每个子序列进行插入排序; 然后减小步长,重新分割子序列,再对每个子序列进行插入排序; 重复上述步骤,直到步长为1,对整个列表进行插入排序,排序完成。 【示意图】 给定 ...
分类:
编程语言 时间:
2018-01-21 12:26:50
阅读次数:
194
希尔排序 ? 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关 ...
分类:
编程语言 时间:
2018-01-20 12:32:23
阅读次数:
210
参考文档: https://www.cnblogs.com/skywang12345/p/3597597.html 算法描述: 希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminshing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希 ...
分类:
编程语言 时间:
2018-01-16 14:00:04
阅读次数:
156
上一篇总结了直接选择排序和堆排序,这一篇要总结的是插入排序中的直接插入排序和希尔排序,我们主要从以下几点进行总结。 1、直接插入排序及算法实现 2、希尔排序及算法实现 3、直接插入排序PK希尔排序 1、直接插入排序及算法实现 什么是直接插入排序呢?直接插入排序的基本思想是:每次从无序序列中取出第一个 ...
分类:
编程语言 时间:
2018-01-15 00:30:32
阅读次数:
187
之前介绍了堆排序和归并排序,今天来说说快速排序。快速排序是应用较多的一种排序方法。 各算法平均排序时间: 数据是随机整数,时间单位是秒。(网上的数据,仅供参考) 数据规模 快速排序 归并排序 希尔排序 堆排序 1000万 0.75 1.22 1.77 3.57 5000万 3.78 6.29 9.4 ...
分类:
编程语言 时间:
2018-01-10 11:44:56
阅读次数:
180
Java排序算法 1)分类: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(箱排序、基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆 ...
分类:
编程语言 时间:
2018-01-08 10:59:28
阅读次数:
205