#include<stdio.h>
#include<stdlib.h>
void shell_sort(int* arr,int size) {
int i, j, k = 1, tmp, jmp;
jmp = size / 2;
while (jmp) {
for (i = jmp; i < size; i++) {
tmp = arr[i];
j = i - jmp;
while (tmp<=arr[j] && j >= 0 ) {
arr[j + jmp] = arr[j];
j = j - jmp;
}
arr[jmp + j] = tmp;
}
jmp = jmp/ 2;
}
}
void showdata(int* arr,int size) {
int i;
for (i = 0; i < size;i++) {
printf("%d ",arr[i]);
}
}
int main() {
int arr[9] = {16,25,39,27,12,8,45,63,12};
printf("原始数组:");
showdata(arr,sizeof(arr)/sizeof(int));
shell_sort(arr, sizeof(arr) / sizeof(int));
printf("\n完成排序后的数组:");
showdata(arr, sizeof(arr) / sizeof(int));
return 0;
}