Data de publicació: Feb 08, 2017 11:17:28 AM
#include <stdio.h>
#define MAX 100
int main(){
int i, j, k, n, h, B;
int V[MAX];
printf("N? ");
scanf("%d",&n);
for ( i = 0; i < n; i++ ){
printf("Valor[%d]? ", i);
scanf("%d",&V[i]);
}
//Array before to be sorted
printf("\nArray to be sorted\n");
printf("(%d,%d) ", i, j );
for ( k = 0; k < n; k++) printf("%d, ", V[k]);
printf("\n\n\n");
h = n/2;
//Start sorting
while (h > 0){
for (i = h-1; i < n; i++){
B = V[i];
j = i;
for (j = i; (j >= h) && (V[j - h] > B); j -= h) { V[j] = V[j - h];}
V[j] = B;
}
h = h / 2;
//Printing sorting
printf("(%d,%d) ", i, j );
for ( k = 0; k < n; k++) printf("%d, ", V[k]);
printf("\n");
}
//Array after being sorted
printf("\n\n\n");
printf("Sorted array\n");
printf("(%d,%d) ", i, j );
for ( k = 0; k < n; k++) printf("%d, ", V[k]);
printf("\n");
}
$ ./sort_shell
N? 5
Valor[0]? 5
Valor[1]? 4
Valor[2]? 3
Valor[3]? 2
Valor[4]? 1
Array to be sorted
(5,0) 5, 4, 3, 2, 1,
(5,0) 1, 2, 3, 4, 5,
(5,4) 1, 2, 3, 4, 5,
Sorted array
(5,4) 1, 2, 3, 4, 5,