hamzajaved

External Merge Sort

Dec 11th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.75 KB | None | 0 0
  1. class Program
  2. {
  3.  
  4. //External Merge Sort
  5. static int[] F = { 75, 55, 15, 20, 85, 30, 35, 10, 60, 40, 50, 25, 45, 80, 70, 65 };
  6. //static int[] F = { 0, 55, 15, 20, 85, 30, 35, 10, 9, 40, 125, 45, 80, 6, 65 };
  7.  
  8. static int[] F1 = new int[F.Length];
  9. static int[] F2 = new int[F.Length];
  10. static void Main(string[] args)
  11. {
  12. Console.Write("F = ");
  13. foreach(var item in F)
  14. {
  15. Console.Write(item+" ");
  16. }
  17.  
  18. F1[0] = F[0];
  19. split(F1, F2, 1, 0, F, 1);
  20. Console.WriteLine("----------------------Sorted-------------------");
  21. foreach(var item in F)
  22. {
  23. Console.WriteLine(item+" ");
  24. }
  25. Console.WriteLine("\n"+ "------------------------------------------");
  26. }
  27. static void split(int []F1,int[] F2,int F1_index,int F2_index, int[] F ,int F_index)
  28. {
  29. if(F_index < F.Length)
  30. {
  31. if(F1[F1_index - 1] < F[F_index])
  32. {
  33. F1[F1_index] = F[F_index];
  34. split(F1, F2, F1_index + 1, F2_index, F, F_index + 1);
  35. }
  36. else
  37. {
  38. F2[F2_index] = F[F_index];
  39. split(F2, F1, F2_index + 1, F1_index, F, F_index + 1);
  40.  
  41. }
  42. }
  43. else
  44. {
  45. Console.WriteLine("\n"+"------------------Split--------------");
  46. Console.WriteLine("F1 = ");
  47. foreach(var item in F1)
  48. {
  49. Console.Write(item + " ");
  50. }
  51. Console.Write("\n" + "F2 = ");
  52. foreach(var item in F2)
  53. {
  54. Console.WriteLine(item + " ");
  55. }
  56. Console.WriteLine("\n"+"---------------------------------------");
  57. merge(F1_index, F2_index, F1, F2);
  58. }
  59. }
  60. static void merge(int F1_index,int F2_index,int [] F1,int [] F2)
  61. {
  62. if(F2_index != 0)
  63. {
  64. int j = 0;
  65. int k = 0;
  66. for (int i = 0; i < F.Length; i++)
  67. {
  68. if(F1[j] < F2[k])
  69. {
  70. if(j < F1_index)
  71. {
  72. F[i] = F1[j];
  73. j = j + 1;
  74. }
  75. else
  76. {
  77. F[i] = F2[k];
  78. k = k + 1;
  79. }
  80. }
  81. else
  82. {
  83. if (k < F2_index)
  84. {
  85. F[i] = F2[k];
  86. k = k + 1;
  87. }
  88. else
  89. {
  90. F[i] = F1[j];
  91. j = j + 1;
  92. }
  93. }
  94. }
  95. for (int i = 0; i < F1.Length; i++)
  96. {
  97. F1[i] = 0;
  98. F2[i] = 0;
  99. }
  100.  
  101. Console.WriteLine("\n" + "----------------------------------Merge------------");
  102. Console.Write("F = ");
  103. foreach(var item in F)
  104. {
  105. Console.Write(item + " ");
  106. }
  107.  
  108. Console.WriteLine("\n"+"---------------------------------------------------------");
  109. F1[0] = F[0];
  110. split(F1, F2, 1, 0, F, 1);
  111. }
  112. }
  113. }
Add Comment
Please, Sign In to add comment