fork(1) download
  1. #include <stdio.h>
  2. #define MAX 1024
  3. void merge(int a[][2],int start,int middle ,int end)
  4. {
  5. int size1 = middle-start +1;
  6. int size2 = end-middle;
  7. int i,j;
  8. int k =start;
  9.  
  10.  
  11. int L[MAX][2];
  12. int R[MAX][2];
  13.  
  14.  
  15. // copy values from main array to temp arrays
  16. for(i=0 ; i<size1; i++)
  17. {
  18. L[i][1] = a[i+start][1];
  19. L[i][0] = a[i+start][0];
  20. }
  21.  
  22. for(j=0 ; j<size2 ; j++)
  23. {
  24. R[j][1] = a[j+middle+1][1];
  25. R[j][0] = a[j+middle+1][0];
  26. }
  27.  
  28. i=0;
  29. j=0;
  30.  
  31. while(i<size1 && j<size2)
  32. {
  33. if(L[i][1] < R[j][1])
  34. {
  35. a[k][1] = L[i][1];
  36. a[k][0] = L[i][0];
  37. k++;
  38. i++;
  39. }
  40. else{
  41. a[k][1] = R[j][1];
  42. a[k][0] = R[j][0];
  43. k++;
  44. j++;
  45. }
  46. }
  47.  
  48. while(i<size1)
  49. {
  50. a[k][1] = L[i][1];
  51. a[k][0] = L[i][0];
  52. i++;
  53. k++;
  54. }
  55.  
  56. while(j<size2)
  57. {
  58. a[k][1] = R[j][1];
  59. a[k][0] = R[j][0];
  60. k++;
  61. j++;
  62. }
  63. }
  64.  
  65. void mergeSort(int a[][2], int start , int end)
  66. {
  67. if(start < end)
  68. {
  69. int middle = start + (end - start) /2;
  70. mergeSort(a,start, middle);
  71. mergeSort(a,middle+1,end);
  72. merge(a,start,middle,end);
  73. }
  74. }
  75.  
  76. int main()
  77. {
  78. int array[10][2] = {{0,55},{1,3},{2,4},{3,5},{4,6},{5,7},{6,8},{7,9},{8,10},{9,2}};
  79. int i;
  80. int len = sizeof(array)/sizeof(array[0]) - 1;
  81. for(i = 0 ;i <= 9; i++)
  82. printf("%d",array[i][1]);
  83. mergeSort(array,0,9);
  84. printf ( "\nArray after sorting:\n") ;
  85. printf ( "\nIndex after sorting:\n") ;
  86. for(i = 0 ;i <= 9; i++)
  87. printf("%d ",array[i][0]);
  88. printf ( "\nArray after sorting:\n") ;
  89. for(i = 0 ;i <= 9; i++)
  90. printf("%d ",array[i][1]);
  91. return 0;
  92. }
Success #stdin #stdout 0s 2248KB
stdin
Standard input is empty
stdout
553456789102
Array after sorting:

Index after sorting:
9 1 2 3 4 5 6 7 8 0 
Array after sorting:
2 3 4 5 6 7 8 9 10 55