(摘自wiki) 一个更好理解的希尔排序实现:将数组列在一个表中并对列排序。重复这过程,不过每次用更长的列来进行。最后整个表就只有一列了。将数组转换至表是为了更好地理解这算法,算法本身仅仅对原数组进行排序(通过增加索引的步长,例如是用i
+= step_size而不是i++)。
例如,假设有这样一组数[ 13 14 94 33 82 25 59 94 65 23 45 27 73 25 ...
分类:
编程语言 时间:
2014-12-08 21:25:38
阅读次数:
189
#include void ShellSort(int A[] , int N );int main(int argc, const char * argv[]) { int A[15] = { 1,3,4,5,6,7,8,8,2,9,10,3,4,5,6,}; Shel...
分类:
编程语言 时间:
2014-12-08 17:20:21
阅读次数:
240
思想简单描述:
在直接插入排序算法中,每次插入一个数,使有序序列只增加1个节点,并且对插入下一个数没有提供任何帮助。如果比较
相隔较远距离(称为增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。D.L.shell于
1959年在以他名字命名的排序算法中实现了这一思想。算法先将要排序的一组数按某个增量d分成若干组,每组中记录的
下标相差d.对每组中全部元素进行排序...
分类:
编程语言 时间:
2014-12-02 17:19:05
阅读次数:
196
#include
using namespace std;
void shellSort(int a[], int n)
{
int i, j, gap;
for(gap = n/2; gap > 0; gap /= 2)//间隔,逐次递减一半
{
for(i = 0; i < gap; i++)//从49到76,逐步递增,也就是分组数。每次循环对一组数完成排序
{
for(...
分类:
编程语言 时间:
2014-11-30 11:25:27
阅读次数:
231
各种排序方法的性能比较
排序方法
最好时间复杂度
平均时间复杂度
最坏时间复杂度
空间复杂度
稳定性
直接插入排序
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
/*
ShellSort.c - by Chimomo
希尔排序又称“缩小增量排序”,是对直接插入排序方法的改进。
希尔排序的基本思想是:先将整个待排序序列分割成若干子序列,然后分别进行直接插入排序,待整个序列中的记录基本有序时,再对全体记录进行一次直接插入排序。
具体做法是:先取一个小于n的整数d1作为第一个增量,将所有距离为d1倍数的记录放在同一个组中,从而把全部记录分成d1组,在各组内进行直...
分类:
编程语言 时间:
2014-11-29 18:59:55
阅读次数:
173
文章参考地址:http://blog.csdn.net/morewindows/article/details/6668714 希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“...
分类:
编程语言 时间:
2014-11-28 15:57:05
阅读次数:
183
转自:http://www.easyx.cn/samples/View.aspx?id=57#include "stdafx.h"#include #include #include using namespace std;int g_len; // Hilbert 曲线的单位长度//string ...
分类:
其他好文 时间:
2014-11-24 11:28:47
阅读次数:
227
我将对几种经典的排序算法进行一个小结,着重于代码的实现。排序算法有冒泡排序、快速排序、直接插入排序、希尔排序、选择排序等。排序算法1:冒泡排序算法原理:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素....
分类:
编程语言 时间:
2014-11-21 17:54:57
阅读次数:
237
希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行...
分类:
编程语言 时间:
2014-11-21 14:12:05
阅读次数:
223