脑图
希尔排序
#include <stdio.h>
#define MAXLEN 10
/**
* 希尔排序
* @param A 待排序数组
*/
void ShellSort(int A[]){
int i,j;
for(int dk=MAXLEN/2;dk>=1;dk=dk/2)
for(i=dk+1;i<=MAXLEN;++i)
if(A[i]<A[i-dk]){
A[0]=A[i];
for (j = i-dk; j>0&&A[0]<A[j]; j-=dk)
A[j+dk]=A[j];
A[j+dk]=A[0];
}
}
int main() {
int arr[MAXLEN]={0,4,5,6,7,2,1,3,8,9};//A[0]不参与排序
ShellSort(arr);
printf("希尔排序\n");
for (int i = 1; i < MAXLEN; ++i) {
printf("%d",arr[i]);
}
return 0;
}