shell_sort

来源:互联网 发布:燕氏姓名学软件 编辑:程序博客网 时间:2024/06/14 16:57
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int n = 0;int InsSort(int a[], int s, int h) {    int x = 0, j = 0;    for (int i = s; i < n; i += h) {        x = a[i];        for (j = i-h; j>=s && x<a[j]; j -= h) {            a[j+h] = a[j];        }        a[j+h] = x;    }    return 0;}int ShellSort(int a[]) {    int inrc = n;    do {        inrc = inrc/3+1;        for (int i = 0; i < inrc; i++) {            InsSort(a, i, inrc);        }    } while (inrc > 1);    return 0;}int main(){    int a[] = {503, 87, 512, 61, 908, 170, 897, 275, 653, 426,                154, 509, 612, 677, 765, 703};    n = 16;    ShellSort(a);    for (int i = 0; i < n; i++) {        if (a[i] < 10) {            printf("00");        } else if (a[i] < 100) {            printf("0");        }        printf("%d ", a[i]);    }    printf("\n");        return 0;}