Advertisement
Zidinjo

MedianOfThree

Jun 8th, 2015
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. package aufgabe1InsertionSort;
  2. public class QuickSortMedian extends CountingSorter implements Sorter
  3. {
  4.  
  5. private int[] a;
  6. private int n;
  7.  
  8. public void sort(int[] a) {
  9. this.a = a;
  10. n = a.length;
  11. quicksort(0, n - 1);
  12. }
  13.  
  14. private void quicksort(int lo, int hi)
  15. {
  16. int i = lo, j = hi;
  17.  
  18. // median of three
  19. int x = median(lo, hi);
  20.  
  21. // Aufteilung
  22. while (i <= j) {
  23. while (a[c(i)] < x)
  24. i++;
  25. while (a[c(j)] > x)
  26. j--;
  27. if (i <= j) {
  28. exchange(i, j);
  29. i++;
  30. j--;
  31. }
  32. }
  33.  
  34. // Rekursion
  35. if (lo < j)
  36. quicksort(lo, j);
  37. if (i < hi)
  38. quicksort(i, hi);
  39. }
  40.  
  41. // Medianpunkt finden
  42. private int median( int lo, int hi)
  43. {
  44. int center = (lo + hi) / 2;
  45.  
  46. if (a[c(lo)] > a[c(center)])
  47. exchange(lo, center);
  48.  
  49. if (a[c(lo)] > a[c(hi)])
  50. exchange(lo, hi);
  51.  
  52. if (a[c(center)] > a[c(hi)])
  53. exchange(center, hi);
  54.  
  55. exchange(center, hi - 1);
  56. return a[hi - 1];
  57. }
  58.  
  59. private void exchange(int i, int j)
  60. {
  61. int t = a[c(i)];
  62. a[c(i)] = a[c(j)];
  63. a[c(j)] = t;
  64. }
  65. } // end class QuickSorter
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement