码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构--排序(上)--希尔排序

时间:2015-08-31 09:54:58      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

希尔排序(by Donald Shell  1959年提出)

  原理:一次改变2个逆序对。要克服简单排序每次只交换相邻元素

技术分享

 希尔增量序列

原始希尔排序

原始希尔排序:技术分享

void Shell_sort(ElementType A[], int N){
    for(D=N/2;D>0;D/=2){    //希尔增量序列
        for(P=D;P<N;P++){    //插入排序
            Tmp = A[P];
            for(i = P ; i>D && A[i-D]>Tmp  ;i-=D){        //一趟冒泡
                A[i] = A[i-D];
            A[i] = Tmp;
            }
        }
    }
}

 

技术分享

技术分享

哪里出现问题了呢? 因为他的增量元素不互质,则小增量可能根本不起作用。

8是4的倍数,4是2的倍数,2是1的倍数

技术分享

 

数据结构--排序(上)--希尔排序

标签:

原文地址:http://www.cnblogs.com/zrui513/p/4772200.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!