for (incr = n; swap != 0 || incr > 1; incr= (incr + 1) / 2) {
swap = 1;
while (swap != 0) {
swap = 0;
for (i = 0; i < n - incr; i++)
if (x[i] > x[i + incr]) {
tmp = x[i];
x[i] = x[i + incr];
x[i + incr] = tmp;
swap = 1;
}
}
}