/*希尔排序递归*/
void ShellSort(int arr[]){
int L=sizeof(arr)/sizeof(*arr);
int step;
for(step=L/2;step>0;step/=2){//step从half-->1,最后step等于1相当于是一次完整的插入排序
for(int i=step;i<L;++i){
Insert(arr,step,i);//对按分量分开的点进行插入排序
}
}
}
void Insert(int arr[],int step,int i){
int j;
int temp=arr[i];
for(j=i-step;j>=0&&temp<arr[j];j-=step){
arr[j+step]==arr[j];//后面一个等于前面一个直到找到temp的合适插入位置
}
arr[j+step]=temp;
}
希尔排序
最新推荐文章于 2023-01-10 14:41:15 发布