Advertisement
Guest User

Untitled

a guest
Apr 1st, 2015
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.Random;
  3.  
  4. public class MergeSort {
  5.  
  6. public static void main(String[] args) {
  7.  
  8. Random random = new Random();
  9. int max = 10000;
  10. int arr[] = new int[max];
  11.  
  12. for (int i=0; i < max; i++) {
  13. arr[i] = random.nextInt(2147483647);
  14. }
  15.  
  16. System.out.println("boop!");
  17. long start = System.currentTimeMillis();
  18. arr = merge(arr).clone();
  19. long end = System.currentTimeMillis();
  20.  
  21. System.out.println("it took " + (end - start) + " milliseconds");
  22. System.out.println(Arrays.toString(arr));
  23.  
  24.  
  25. }
  26.  
  27. public static int[] merge(int[] array) {
  28.  
  29. int maxIndex = array.length;
  30. int halfIndex = (array.length) / 2;
  31.  
  32.  
  33. // if the array was split into one
  34. if (array.length <= 1) {
  35. return array;
  36. }
  37.  
  38. int[] subArray1;
  39. int[] subArray2;
  40. int[] sorted;
  41.  
  42. subArray1 = Arrays.copyOfRange(array, 0, halfIndex);
  43. subArray2 = Arrays.copyOfRange(array, halfIndex, maxIndex);
  44.  
  45. subArray1 = merge(subArray1);
  46. subArray2 = merge(subArray2);
  47.  
  48.  
  49. sorted = new int[subArray1.length + subArray2.length];
  50.  
  51.  
  52. int index1 = 0, index2 = 0;
  53. for (int i = 0; i < sorted.length; i++) {
  54.  
  55. // if subArray1 ran out of elements
  56. if (index1 == subArray1.length) {
  57. for (; i < sorted.length; i++) {
  58. sorted[i] = subArray2[index2++];
  59. }
  60.  
  61. break;
  62. }
  63.  
  64. // if subArray2 ran out of elements
  65. if (index2 == subArray2.length) {
  66. for(; i < sorted.length; i++) {
  67. sorted[i] = subArray1[index1++];
  68. }
  69.  
  70. break;
  71. }
  72.  
  73. if (subArray1[index1] <= subArray2[index2]) {
  74. sorted[i] = subArray1[index1++];
  75. continue;
  76. }
  77.  
  78.  
  79. if (subArray1[index1] > subArray2[index2]) {
  80. sorted[i] = subArray2[index2++];
  81. continue;
  82. }
  83.  
  84. }
  85. return sorted;
  86.  
  87.  
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement