上一篇介绍了希尔排序,它又被称为缩小增量排序,这就说明了增量在希尔排序中的重要性。 本篇使用四组不同的增量,通过统计排序的比较次数、移动次数、执行时间,来讨论不同的增量对希尔排序效率的影响。 选取的增量:h1=N/2, N/4, N/8,……,1(每次增量减半) h2=N/3, N/9, N/27, ...
分类:
编程语言 时间:
2017-11-08 20:50:22
阅读次数:
272
希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。本文会以图解的方式详细介绍希尔排序的基本思想及其代码实现。 基本思想 希尔排序是把记录按 ...
分类:
编程语言 时间:
2017-11-08 00:49:19
阅读次数:
195
数据结构--- 本章知识对这几种排序的几种典型例子进行整合; 对有一定定义基础的人来说 更方便理解。具有一定的帮助 ...
分类:
编程语言 时间:
2017-11-05 17:22:41
阅读次数:
189
package algorithm; import java.util.Arrays; public class ShellSort { public static void shellSort(int[] arr,int[] d) { /** * 希尔排序:用一个增量序列作为每一次直接插入排序的间... ...
分类:
编程语言 时间:
2017-11-04 19:31:10
阅读次数:
174
首先,Shell是发明这个算法的人名,不是这个算法的思想或者特点。 希尔排序,也称为增量递减排序。基本思路,是把原来的序列,等效视为一个矩阵的形式。矩阵的列数,也称为宽度或者增量,记为w。 假设数组A[n]以及矩阵B[][],对于两者的对应关系,可以记为A[k]=B[k/w][k%w]。也就是说,A ...
分类:
编程语言 时间:
2017-11-03 21:57:22
阅读次数:
204
前面两篇介绍了两个非常简单又非常基础的算法——选择排序和插入排序,并通过一篇关于大乐透的小应用程序介绍了插入排序的一个简单应用。本篇介绍一个基于插入排序算法的、快速的排序算法——希尔排序。同样,本篇主要从“基本原理、排序流程、核心代码、算法性能、稳定性、参考代码”等几个方面介绍这一算法。 对于大规模 ...
分类:
编程语言 时间:
2017-11-01 23:55:08
阅读次数:
283
核心代码 算法分析: 最好时间复杂度:O(n) 有序 平均时间复杂度:O(n^1.3) 最坏时间复杂度:O(n^2) 空间复杂度:O(1) 稳定性:不稳定 ...
分类:
编程语言 时间:
2017-10-28 12:57:33
阅读次数:
132
常见的有冒泡排序、选择排序、归并排序、快排、希尔排序、插入排序等 等 ...
分类:
编程语言 时间:
2017-10-19 14:57:20
阅读次数:
197
排序的分类: 1.希尔排序 希尔排序是快速插入排序的改进版,希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止 基本思路:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有 ...
分类:
编程语言 时间:
2017-10-18 19:45:51
阅读次数:
271
希尔排序(缩小增量排序) <script type="text/javascript"> var obj={ data:[0,3,11,5,7,4,8,9,5], length:8 }; //希尔排序(缩小增量排序) //思想:希尔排序是在直接插入排序的基础上得来的,直接插入在待排序的 //序列基本 ...
分类:
系统相关 时间:
2017-10-17 09:56:53
阅读次数:
171