Advertisement
Guest User

Untitled

a guest
Jun 29th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1. /**
  2. * Created by Linda Lawton on 6/29/2017.
  3. */
  4. public class MergeSort {
  5.  
  6. public static void main(String[] args) throws Exception {
  7.  
  8. int[] data = new int[]{8, 3, 1, 7, 0};
  9. System.out.print("Before Sort: ");
  10. for (int i = 0; i < data.length; i++) System.out.print( data[i] + ",");
  11. System.out.println();
  12. sort(data,0,data.length-1);
  13. System.out.print("After Sort: ");
  14. for (int i = 0; i < data.length; i++) System.out.print( data[i] + ",");
  15.  
  16. }
  17.  
  18. public static void sort(int[] data, int start, int end) {
  19.  
  20. if (end > start) {
  21.  
  22. int middle = (start + end) / 2;
  23. sort(data, start, middle);
  24. sort(data, middle + 1, end);
  25. merge(data, start, middle, end);
  26. }
  27. }
  28.  
  29.  
  30. public static void merge(int[] data, int start, int mid, int end) {
  31.  
  32.  
  33. System.out.println("------------------------------------");
  34. System.out.println("Start: " + start + " Middle: " + mid + " End: " + end);
  35. System.out.print("Data is : " );
  36. for (int i = 0; i < data.length; i++) System.out.print( data[i] + ",");
  37. System.out.println();
  38.  
  39. int[] temp = new int[data.length];
  40.  
  41. int startOfLeft = start;
  42. int startOfRight = mid + 1;
  43. int pos = start;
  44.  
  45. while (startOfLeft <= mid && startOfRight <= end) {
  46.  
  47. if (data[startOfLeft] < data[startOfRight])
  48. temp[pos++] = data[startOfLeft++];
  49. else
  50. temp[pos++] = data[startOfRight++];
  51. }
  52.  
  53. while (startOfLeft <= mid)
  54. temp[pos++] = data[startOfLeft++];
  55.  
  56. while (startOfRight <= end) {
  57. temp[pos++] = data[startOfRight++];
  58. }
  59.  
  60.  
  61. System.out.print("Temp is: ");
  62. for (int i = 0; i < data.length; i++)
  63. System.out.print( temp[i] + ",");
  64.  
  65. int hold = (end-start) + 1;
  66. System.out.println();
  67. System.out.println("Hold is " + hold);
  68. for (int i = 0; i < hold; i++) {
  69. data[end] = temp[end];
  70. end--;
  71. }
  72. System.out.print("Data is : ");
  73. for (int i = 0; i < data.length; i++) System.out.print( data[i] + ",");
  74. System.out.println();
  75. }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement