Advertisement
Guest User

Untitled

a guest
Mar 19th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.68 KB | None | 0 0
  1. package CW4;
  2.  
  3. import java.util.*;
  4.  
  5. public class JavaAlgosCW4 {
  6. public static final int partitionOne(int[] a, int left, int right)
  7. {
  8. int pivot = right;
  9. int i = left, j = right;
  10.  
  11. while( i < j )
  12. {
  13. if ( a[i] <= a[pivot] )
  14. {
  15. i++;
  16. System.out.println("Stage 1 // I: " + i);
  17. }
  18. if( a[i] > a[pivot])
  19. {
  20. if(( a[i] > a[pivot] ) && ( a[j] <= a[pivot] ))
  21. {
  22. swapIndex(a,i,j);
  23. i++;
  24. }
  25. if( a[j] > a[pivot])
  26. {
  27. j--;
  28. System.out.println("Stage 2 // J: " + j);
  29. }
  30. }
  31.  
  32. if ( i < j )
  33. {
  34. swapIndex(a,i,j);
  35. System.out.println("Stage 3 // Swap: "
  36. + " a[i="+i+"] = " + a[i]
  37. + " a[j="+j+"] = " + a[j]
  38. + Arrays.toString(a));
  39. }
  40. }
  41. swapIndex(a,i,pivot);
  42. return i;
  43. }
  44.  
  45. public static final int partitionTwo(int[] a, int left, int right)
  46. {
  47. int p = medianOfThree(a,left,(right/2),right);
  48. int pivot = right;
  49. int i = left, j = right;
  50.  
  51. while( i < j )
  52. {
  53. if ( a[i] <= a[pivot] )
  54. {
  55. i++;
  56. System.out.println("Stage 1 // I: " + i);
  57. }
  58. if( a[i] > a[pivot])
  59. {
  60. if(( a[i] > a[pivot] ) && ( a[j] <= a[pivot] ))
  61. {
  62. swapIndex(a,i,j);
  63. i++;
  64. }
  65. if( a[j] > a[pivot])
  66. {
  67. j--;
  68. System.out.println("Stage 2 // J: " + j);
  69. }
  70. }
  71.  
  72. if ( i < j )
  73. {
  74. swapIndex(a,i,j);
  75. System.out.println("Stage 3 // Swap: "
  76. + " a[i="+i+"] = " + a[i]
  77. + " a[j="+j+"] = " + a[j]
  78. + Arrays.toString(a));
  79. }
  80. }
  81. swapIndex(a,i,pivot);
  82. return i;
  83. }
  84.  
  85. private static final void swapIndex(int[] a, int index1, int index2)
  86. {
  87. int temp = a[index1];
  88. a[index1] = a[index2];
  89. a[index2] = temp;
  90. }
  91.  
  92. public static void quicksort(int[] a, int i, int j)
  93. {
  94. if(i>=j)
  95. {
  96. return;
  97. }
  98. int p = partitionOne(a, i, j);
  99. quicksort(a, i, p-1);
  100. quicksort(a, p+1, j);
  101. }
  102. private static int medianOfThree (Comparable[] a, int left, int mid, int right) {
  103. /* Return median position in array of elements
  104. * a[left], a[mid], and a[right] */
  105. if (a[left].compareTo(a[mid]) < 0) {
  106. if (a[mid].compareTo(a[right]) < 0)
  107. return mid;
  108. else if(a[left].compareTo(a[right]) < 0)
  109. return right;
  110. else
  111. return left;
  112. } else {
  113. if (a[mid].compareTo(a[right]) > 0)
  114. return mid;
  115. else if (a[left].compareTo(a[right]) > 0)
  116. return right;
  117. else
  118. return left;
  119. }
  120.  
  121. public static void main(String[] args)
  122. {
  123. //int[] numbers = {9,8,7,6,5,4,3,2,1};
  124. int[] numbers = {24,2,45,20,56,100,2,56,99,53,12};
  125.  
  126. System.out.println(Arrays.toString(numbers));
  127. JavaAlgosCW4.quicksort(numbers, 0, numbers.length - 1);
  128. System.out.println(Arrays.toString(numbers));
  129. }
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement