#include <iostream> using namespace std; int a[] = {23, 4, 5, 11, 3, 5, 6, 93, 19}; void shellInsert(int *a, int size, int len) { int i, j, dk=len, temp; for(dk=len; dk>0; dk/=2) //dk为增量 依次递减 最后为1 { for(i=dk; i<size; i++) { if(a[i] < a[i-dk]) { temp = a[i]; for(j=i-dk; j>=0 && temp<a[j]; j-=dk) { a[j+dk] = a[j]; } a[j+dk] = temp; } } } } int main() { int size=sizeof(a)/sizeof(int); shellInsert(a, size, 5); for(int i=0; i<sizeof(a)/sizeof(int); i++) { cout<<a[i]<<" "; } system("pause"); return 0; }