@ -0,0 +1,31 @@
//希尔排序//
#include <stdio.h>
int main(){
int i=0,gap=0,k=0,j=0,t=0;
int n=0;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(gap=10/2;gap>0;gap=gap/2){
for(k=gap;k<10;k++){
t=a[k];
j=k-gap;
while(j>=0&&t<a[j]){
a[j+gap]=a[j];
j=j-gap;
a[j+gap]=t;
printf("%d",a[0]);
for(j=1;j<10;j++){
printf(" %d ",a[j]);
return 0;
//时间复杂度
// 希尔排序的时间复杂度依赖于增量序列的函数,有人在大量的实验后得出的结论:当n在某个特定的范围后,在最优的情况下,希尔排序的时间复杂度为O(n1.3),在最差的情况下,希尔排序的时间复杂度为:O(n2).
//空间复杂度
//希尔排序的空间复杂度:O(1).