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;}