#include <stdio.h> #include <time.h> void shellsort(int a[], int l, int r) { int h; //step 1 4 13 40 121 ... for(h=1; h<=(r-l)/9; h=h*3+1); for(; h>0; h=h/3) { for(int i=l+h; i<=r; i++) { int j=i; int v = a[i]; while(j>=l+h && v<a[j-h]) { a[j] = a[j-h]; j -= h; } a[j] = v; } } } int main() { int a[10] = {4,3,6,5,3,1,8,9,6,5}; shellsort(a, 0, 9); for(int i=0; i<10; i++) printf("%d ", a[i]); printf("\n"); return 0; }