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

index after sorting:
9876543210
Array after sorting:
210987654355