#include <stdio.h>
void Insertsort(int a[],int n);
void print_arr(int a[],int n);
int main () {
int a[10] = {8,7,5,2,3,6,9,9,6,4};
int n = 10;
Shellsort(a,n);
print_arr(a,n);
return 0;
}
void print_arr(int a[],int n){
for(int i = 0 ; i < n ; i++){
printf("%d ",a[i]);
}
printf("\n");
return;
}
void Insertsort(int a[],int n){
int j;
for(int i = 1 ; i < n ; i++){
int temp = a[i];
for(j = i-1 ; j >=0 ; j-- ){
if(a[j]>=temp) a[j+1] = a[j];
else break;
}
a[j+1] = temp;
}
return ;
}
void Shellsort(int a[],int n){
int d ;
int temp;
int k;
for(d = n/2 ; d >=1 ; d/=2){
for(int i = 0 ; i < d ; i++){
for(int j = i+d ; j < n ; j+=d){
int temp = a[j];
for( k = j-d ; k >=i ; k-=d ){
if(a[k]>=temp) a[k+d] = a[k];
else break;
}
a[k+d] = temp;
}
}
print_arr(a,n);
}
return;
}