加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

ShellSort

发布时间:2020-12-15 23:10:11 所属栏目:安全 来源:网络整理
导读:#include bits/stdc++.h using namespace std; #define MAXSIZE 200000 typedef int KeyType;typedef struct { KeyType key;}RedType;typedef struct { RedType r[MAXSIZE + 1 ]; int length;}SqList; int Random( int start, int end){ int dis = end - sta
#include <bits/stdc++.h>

using namespace std;
#define MAXSIZE 200000
typedef int KeyType;
typedef struct {
    KeyType key;
}RedType;
typedef struct {
    RedType r[MAXSIZE + 1];
    int length;
}SqList;
int Random(int start,int end){
    int dis = end - start;
    return rand() % dis + start;
}
void ShellInsert(SqList &L,int dk) {
    int i,j;
    for (i = dk + 1; i <= L.length; ++i) 
        if(L.r[i].key < L.r[i - dk].key) {
            L.r[0] = L.r[i];
            for (j = i - dk; j > 0 && L.r[0].key < L.r[j].key; j -= dk) 
                L.r[j + dk] = L.r[j];
            L.r[j + dk] = L.r[0];
        }
}
void ShellSort (SqList &L,int dt[],int t) {
    double start_time,finish_time,cord_time;
    start_time = clock();
    int k;
    for (k = 0; k < t; ++k) {
        ShellInsert(L,dt[k]);
    }
    finish_time = clock();
    cord_time = (double)(finish_time - start_time) ;
    printf("ShellSort time=%f msn",cord_time);
    // int i;
    // for (i = 0; i < 3; ++i)
    //     printf("%dn",dt[i]);
}
// void Zengliang(SqList &L,int dt[]) {
//     for (int i = 1; i <=L.length; ++i) {
//         dt[i-1] = pow(2,i) - 1;
//     }
// }
void InPut(SqList &L) {
    int i;
    srand((unsigned)time(NULL));
    cin >> L.length;
    for (i = 1; i <= L.length; ++i) {
        // cin >> L.r[i].key;
        L.r[i].key = Random(1,1000000);
    }
}
void OutPut(SqList &L) {
    int i;
    for (i = 1; i <= L.length; ++i) {
        cout << L.r[i].key << " ";
    }
}
// void test (SqList &L,int dt[]) {
//     int i;
//     for (i = 0; i < L.length; ++i)
//         printf("%dn",dt[i]);
// }
int main() {
    int dt[3] = {5,3,1};
    SqList L;
    // L.r = new RedType [MAXSIZE+1];
    InPut(L);
    // Zengliang(L,dt);
    // test(L,dt);
    ShellSort(L,dt,3);
    OutPut(L);
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读