希尔排序(Shell
Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2
希尔排序是基于插入排序的以下两点性质而提出改进方法的:
1.插入排序在对几乎已...
分类:
其他好文 时间:
2014-07-19 12:04:01
阅读次数:
202
直接插入排序:将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1...
分类:
其他好文 时间:
2014-07-16 17:32:03
阅读次数:
223
写在前面:
排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。因此排序掌握各种排序算法非常重要。对下面介绍的各个排序,我们假定所有排序的关键字都是整数、对传入函数的参数默认是已经检查好了的。只是简单的描述各个算法并给出了具体实现代码,并未做其他深究探讨。
基础知识:
...
分类:
其他好文 时间:
2014-07-16 09:47:22
阅读次数:
296
本博文向大家介绍了插入排序的三种实现:直接插入排序,二分查找插入排序,希尔排序。详细分析的其实现过程、时间复杂度和空间复杂度、稳定性以及优化改进策略。最后简单的做了下性能测试。
分类:
其他好文 时间:
2014-07-15 09:59:26
阅读次数:
261
比较排序(Comparison Sort)通过对数组中的元素进行比较来实现排序。本文介绍常见的比较排序算法,包括插入排序(Insertion Sort)、希尔排序(Shell Sort)、快速排序(Quicksort)、冒泡排序(Bubble Sort)、鸡尾酒排序(Cocktail Sort)、奇...
分类:
其他好文 时间:
2014-07-14 10:41:39
阅读次数:
479
希尔排序对于多达几千个数据项的,中等大小规模的数组排序表现良好,希尔排序不像快速排序和其它时间复杂度为O(n*logn)的排序算法那么快,因此,对非常大的文件排序,它不是最优选择,但是希尔排序比选择排序和插入排序这种时间复杂度为O(n²)的排序要快的多,并且它非常容易实现,代码简短 希尔排序也...
分类:
其他好文 时间:
2014-07-12 13:06:10
阅读次数:
190
一、直接插入排序
稳定,时间复杂度:最好O(n)、最差O(n^2)、平均O(n^2),空间复杂度O(1)
void InsertSort(int L[], int n)
{
int i, j,key;
for (i = 1; i<n; i++)
if(L[i] < L[i-1])//需要将L[i]插入到有序表L[0...i-1]
{
key = L[i];...
分类:
其他好文 时间:
2014-07-08 13:40:33
阅读次数:
137
排序算法有很多种,这里在复习和分析的基础上,做一个自己的总结;首先要知道有哪些排序算法,google一下,有云C语言7大经典排序算法(也有8大)。主要包括冒泡排序,快速排序,选择排序,插入排序,希尔排序,归并排序,堆排序,8大的还有基数排序。各有各的版本,代码写法也各不相同。所以这里以整理思路为先,...
分类:
编程语言 时间:
2014-07-06 23:13:49
阅读次数:
301
/**希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。
*该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,...
分类:
其他好文 时间:
2014-07-05 23:26:18
阅读次数:
210