fork download
  1. #include <stdio.h>
  2.  
  3. #define ARRAY_SIZE 10
  4. void display_array(int A[]) {
  5. int i;
  6. for (i =0; i < ARRAY_SIZE; ++i)
  7. printf("%d ", A[i]);
  8. printf ("\n");
  9. }
  10.  
  11. void shell_sort(int A[]){
  12. display_array(A);
  13.  
  14. int k = ARRAY_SIZE/2;
  15. int j = 0; // index of value that swaps with value k spaces back
  16. int temp = 0;
  17. int i;
  18.  
  19. while (k > 0){
  20.  
  21. for (i = k; i < ARRAY_SIZE; i++ ) {
  22. j = i;
  23. int temp = A[i];
  24. while( (j - k) >= 0 && A[j-k] > temp ){
  25. A[j] = A[j-k];
  26. j = j -k;
  27. }
  28. A[j] = temp;
  29. }
  30. printf("k=%d\n",k);
  31. display_array(A);
  32. k = k/2;
  33. }
  34. }
  35.  
  36. int main() {
  37. int A[ARRAY_SIZE] = {15,4,6,2,7,8,44,1,9,3};
  38. shell_sort(A);
  39. return 0;
  40. }
  41.  
Success #stdin #stdout 0s 2168KB
stdin
Standard input is empty
stdout
15 4 6 2 7 8 44 1 9 3 
k=5
8 4 1 2 3 15 44 6 9 7 
k=2
1 2 3 4 8 6 9 7 44 15 
k=1
1 2 3 4 6 7 8 9 15 44