希尔排序

/*
 * 希尔排序(在具有几万组数据量排序时有较好的表现~)
 * 1.希尔排序的整体时间复杂度与增量序列的选取有关,目前没有统一的最优增量序列。
 * 2.Sedgewick增量序列:{1,5,19,41,109,。。} 按照 9*4^i-9*2^i+1或4^i-3*2^i+1进行选取。
   猜想时间复杂度: 平均:O(n^6/7) 最坏: O(n*4/3)..
 */
#include "iostream"
using namespace std;    
int N = 10;
int a[10] = { 3,2,1,5,7,6,9,8,2,0 };
void shellSort() {
    int si, d, p, i;
    int Sedgewick[] = { 929,505,209,41,19,5,1,0 };
    for (si = 0; Sedgewick[si] >= N; si++); /* 初始的sedgeWick[si]不能超过排序数组的长度 */ 

        for (d = Sedgewick[si]; d > 0; d = Sedgewick[++si])
            for (p = d; p < N; p++) { /* 插入排序 */
                int temp = a[p];
                for (i = p; i >= d&& a[i - d] > temp; i -= d)
                    a[i] = a[i - d];
                a[i] = temp;
            }
}
void print() {
    for (int i = 0; i < N; i++)
        cout << a[i] << " ";
    cout << endl;
}
int main() {
    shellSort();
    print();
}

 

转载于:https://www.cnblogs.com/minesweeper/p/6131138.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值