#include <stdio.h>
#define ARRAY_SIZE 10
void display_array(int A[]) {
int i;
for (i =0; i < ARRAY_SIZE; ++i)
}
void shell_sort(int A[]){
display_array(A);
int k = ARRAY_SIZE/2;
int j = 0; // index of value that swaps with value k spaces back
int temp = 0;
int i;
while (k > 0){
for (i = k; i < ARRAY_SIZE; i++ ) {
j = i;
int temp = A[i];
while( (j - k) >= 0 && A[j-k] > temp ){
A[j] = A[j-k];
j = j -k;
}
A[j] = temp;
}
display_array(A);
k = k/2;
}
}
int main() {
int A[ARRAY_SIZE] = {15,4,6,2,7,8,44,1,9,3};
shell_sort(A);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIEFSUkFZX1NJWkUgMTAKdm9pZCBkaXNwbGF5X2FycmF5KGludCBBW10pIHsKCWludCBpOwoJZm9yIChpID0wOyBpIDwgQVJSQVlfU0laRTsgKytpKQoJCXByaW50ZigiJWQgIiwgQVtpXSk7CglwcmludGYgKCJcbiIpOwp9Cgp2b2lkIHNoZWxsX3NvcnQoaW50IEFbXSl7CiAgICBkaXNwbGF5X2FycmF5KEEpOwoKICAgIGludCBrID0gQVJSQVlfU0laRS8yOwogICAgaW50IGogPSAwOyAvLyBpbmRleCBvZiB2YWx1ZSB0aGF0IHN3YXBzIHdpdGggdmFsdWUgayBzcGFjZXMgYmFjawogICAgaW50IHRlbXAgPSAwOwogICAgaW50IGk7CgogICAgd2hpbGUgKGsgPiAwKXsKCiAgICAgICAgZm9yIChpID0gazsgaSA8IEFSUkFZX1NJWkU7IGkrKyApIHsKICAgICAgICAgICAgaiA9IGk7CiAgICAgICAgICAgIGludCB0ZW1wID0gQVtpXTsKICAgICAgICAgICAgd2hpbGUoIChqIC0gaykgPj0gMCAmJiBBW2ota10gPiB0ZW1wICl7CiAgICAgICAgICAgICAgICBBW2pdID0gQVtqLWtdOwogICAgICAgICAgICAgICAgaiA9IGogLWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQVtqXSA9IHRlbXA7CiAgICAgICAgfQogICAgICAgIHByaW50Zigiaz0lZFxuIixrKTsKICAgICAgICBkaXNwbGF5X2FycmF5KEEpOwogICAgICAgIGsgPSBrLzI7CiAgICB9Cn0KCmludCBtYWluKCkgewoJaW50IEFbQVJSQVlfU0laRV0gPSB7MTUsNCw2LDIsNyw4LDQ0LDEsOSwzfTsKCXNoZWxsX3NvcnQoQSk7CglyZXR1cm4gMDsKfQo=