(1)希尔排序
核心:插入排序 + 分组
(2)希尔排序—— 详细过程
(3)实现代码
见文末(不常考!)
(4)算法性能分析
实现代码(C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[]={5,7,1,2,4,6};
int n=sizeof(a)/sizeof(a[0]);
int d,i,j,temp;
for(d=n/2;d>=1;d=d/2){ //增量为d进行直接插入排序
for(i=d;i<n;i++){ //进行一趟希尔排序
temp=a[i];
for(j=i-d;j>=0&&temp<a[j];j=j-d){
a[j+d]=a[j]; //数据后移d个位置
}
a[j+d]=temp;
}
}
for(i=0;i<n;i++){
cout<<a[i]<<" ";
}
return 0;
}