希尔排序被称为“分组插入排序”,是一种分组比较,再把增量减小,小组细分的办法,直到最后增量为1,排序完成,算法与直接插入排序类似,只是多了一个增量而已。
#include <stdio.h>
#define NUM 5
void shell_sort(int a[],int n);
void main(){
int a[NUM] = {5,4,3,2,1};
shell_sort(a,NUM);
for(int i = 0; i < NUM; i++){
printf("%d",a[i]);
}
}
void shell_sort(int a[],int n){
int i,j,temp,gap;
for(gap = n/2;gap > 0;gap /= 2){
for(i = gap;i < n;i++){
for(j = i;j > 0;j -= gap){
if(a[j-gap] > a[j]){
temp = a[j];
a[j] = a[j-gap];
a[j-gap] = temp;
}
}
}
}
}