#include <iostream>
using namespace std;
void swap(int a, int b, int *x) {
int t = x[a];
x[a] = x[b];
x[b] = t;
}
void inssort(int *a, int n, int incr) {
for (int i = incr; i < n; i += incr) {
for (int j = i; (j >= incr) && (a[j] < a[j - 1]); j -= incr) {
swap(j, j - 1, a);
}
}
}
void shellsort(int *a, int n) {
for (int i = n / 2; i > 2; i /= 2) {
for (int j = 0; j < i; j++) {
inssort(a, n - j, i);
}
}
inssort(a, n, 1);
}
转载于:https://my.oschina.net/u/3772904/blog/1616958