fork download
  1. #include <stdio.h>
  2.  
  3. int sortedList[8]={0};
  4.  
  5. int merge (int* array, int left, int pivot, int right){
  6. int Li = 0;
  7. int Ri = pivot +1;
  8. int SLi = 0;
  9.  
  10. while (Li<=pivot && Ri <= right){
  11. if (array[Li] > array[Ri] ){
  12. sortedList[SLi]= array[Ri];
  13. Ri++;
  14. }
  15. else {
  16. sortedList[SLi]= array[Li];
  17. Li++;
  18. }
  19. SLi++;
  20. }
  21.  
  22.  
  23. while (Li <= pivot){
  24. sortedList [SLi++]= array[Li++];
  25. }
  26.  
  27. while (Ri <= right){
  28. sortedList [SLi++] = array[Ri++];
  29. }
  30.  
  31.  
  32. for (int pi = 0 ; pi<SLi; pi++)
  33. printf ("%d ", sortedList[pi]);
  34.  
  35. printf("\n");
  36. }
  37.  
  38. int mergeSort (int*list, int left, int right){
  39. printf ("left = %d\tright %d\n", left, right);
  40. if (right <= left){
  41. printf ("basecase\n");
  42. return 0;
  43. }
  44.  
  45. int pivot = (left+right)/2;
  46. mergeSort (list, left, pivot);
  47. mergeSort (list, pivot+1, right);
  48. merge (list, left, pivot, right);
  49. return 1;
  50.  
  51.  
  52. }
  53.  
  54.  
  55.  
  56. int main(void) {
  57.  
  58. int array []= {5,10,1,3,8,6,9,7};
  59.  
  60. int left = 0;
  61. int right = sizeof(array)/sizeof(int);
  62.  
  63. mergeSort (array, left, right);
  64.  
  65.  
  66. // your code goes here
  67. return 0;
  68. }
  69.  
Success #stdin #stdout 0s 9416KB
stdin
Standard input is empty
stdout
left = 0	right 8
left = 0	right 4
left = 0	right 2
left = 0	right 1
left = 0	right 0
basecase
left = 1	right 1
basecase
5 10 
left = 2	right 2
basecase
1 5 10 
left = 3	right 4
left = 3	right 3
basecase
left = 4	right 4
basecase
5 8 10 1 3 
3 5 8 10 1 
left = 5	right 8
left = 5	right 6
left = 5	right 5
basecase
left = 6	right 6
basecase
5 9 10 1 3 8 6 
left = 7	right 8
left = 7	right 7
basecase
left = 8	right 8
basecase
0 5 10 1 3 8 6 9 7 
5 7 0 10 1 3 8 6 9 
5 6 9 7 0 10 1 3 8