#include<stdio.h>
void sellsort(int a[],int n){
int i,j,increment;
int temp;
for(increment=n/2;increment>0;increment/=2){
for(i=increment;i<n;i++){
temp=a[i];
for(j=i;j>=increment;j-=increment){
if(temp<a[j-increment])
a[j]=a[j-increment];
else
break;
}
a[j]=temp;
}
}
}
int main(){
int n;
scanf("%d",&n);
int a[n];
int i;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
sellsort(a,n);
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
return 0;
}
#include<stdio.h>
void sellsort(int a[],int n){
int i,j,increment;
int temp;
for(increment=n/2;increment>0;increment/=2){
for(i=increment;i<n;i++){
temp=a[i];
for(j=i;j>=increment;j-=increment){
if(temp<a[j-increment])
a[j]=a[j-increment];
else
break;
}
a[j]=temp;
}
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
printf("\n");
}
}
int main(){
int n;
scanf("%d",&n);
int a[n];
int i;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
sellsort(a,n);
return 0;
}
希尔排序是如何一步步比较交换的:
插入排序实质就是增量为1的希尔排序