void shellinsertmain(int data[], int gap[], int n, int m) { int i; for (i=0;i<m; i++) { shellinsert(data, gap[i], n); } }
shellsort::shellsort(int data[],int length):sort(data,length) { dk=length/2; while(dk>=1) { shellinsert(); dk/=2; } }
unsigned long shellsort(int array[], int n) { unsigned long times = 0; int gap; for (gap = n/2; gap > 0; gap /= 2) times += shellinsert(array, gap, n); return times; }