Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. import java.util.Random;
  2.  
  3. public class sort {
  4. private static int numberOfValues = 1000;
  5. private static int[] sortArr = new int[numberOfValues];
  6. private static Random rand = new Random();
  7. public static void main(String[] args) {
  8. getArr(numberOfValues, sortArr);
  9. long start = System.currentTimeMillis();
  10. insertionSort(numberOfValues, sortArr);
  11.  
  12. long end = System.currentTimeMillis();
  13. System.out.println("Merge took: " + (end - start) + "milliseconds");
  14.  
  15. for(int i = 0; i < numberOfValues; i++) {
  16. System.out.println(sortArr[i] + " ");
  17.  
  18. }
  19. }
  20.  
  21. public static int[] insertionSort(int b, int[] a) {
  22. for(int i = 0; i < numberOfValues; i++) {
  23. int x = a[i];
  24. int k = i - 1;
  25.  
  26. while(k >= 0 && a[k] > x) {
  27. a[k + 1] = a[k];
  28. k = k - 1;
  29. }
  30. a[k + 1]= x;
  31. }
  32. return a;
  33. }
  34.  
  35. public static int[] getArr(int a, int[] b) {
  36. for(int i = 0; i < numberOfValues; i++) {
  37. sortArr[i] = rand.nextInt(101);
  38. }
  39. return sortArr;
  40. }
  41.  
  42. public static void mergeSort(int b, int [] a)
  43. {
  44. int[] tmp = new int[a.length];
  45. mergeSort(a, tmp, 0, a.length - 1);
  46. }
  47.  
  48. private static void mergeSort(int [] a, int [] tmp, int left, int right)
  49. {
  50. if( left < right )
  51. {
  52. int center = (left + right) / 2;
  53. mergeSort(a, tmp, left, center);
  54. mergeSort(a, tmp, center + 1, right);
  55. merge(a, tmp, left, center + 1, right);
  56. }
  57. }
  58.  
  59. private static void merge(int[] a, int[] tmp, int left, int right, int rightEnd )
  60. {
  61. int leftEnd = right - 1;
  62. int k = left;
  63. int num = rightEnd - left + 1;
  64.  
  65. while(left <= leftEnd && right <= rightEnd)
  66. if(a[left] <= (a[right]))
  67. tmp[k++] = a[left++];
  68. else
  69. tmp[k++] = a[right++];
  70.  
  71. while(left <= leftEnd) // Copy rest of first half
  72. tmp[k++] = a[left++];
  73.  
  74. while(right <= rightEnd) // Copy rest of right half
  75. tmp[k++] = a[right++];
  76.  
  77. // Copy tmp back
  78. for(int i = 0; i < num; i++, rightEnd--)
  79. a[rightEnd] = tmp[rightEnd];
  80. }
  81.  
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement