1 36 37 40 41 49 public class QSortAlgorithm extends SortAlgorithm 50 { 51 52 56 private boolean pauseTrue(int lo, int hi) throws Exception { 57 super.pause(lo, hi); 58 return true; 59 } 60 61 75 void QuickSort(int a[], int lo0, int hi0) throws Exception 76 { 77 int lo = lo0; 78 int hi = hi0; 79 int mid; 80 81 if ( hi0 > lo0) 82 { 83 84 87 mid = a[ ( lo0 + hi0 ) / 2 ]; 88 89 while( lo <= hi ) 91 { 92 95 while( ( lo < hi0 ) && pauseTrue(lo0, hi0) && ( a[lo] < mid )) 96 ++lo; 97 98 101 while( ( hi > lo0 ) && pauseTrue(lo0, hi0) && ( a[hi] > mid )) 102 --hi; 103 104 if( lo <= hi ) 106 { 107 swap(a, lo, hi); 108 ++lo; 109 --hi; 110 } 111 } 112 113 116 if( lo0 < hi ) 117 QuickSort( a, lo0, hi ); 118 119 122 if( lo < hi0 ) 123 QuickSort( a, lo, hi0 ); 124 125 } 126 } 127 128 private void swap(int a[], int i, int j) 129 { 130 int T; 131 T = a[i]; 132 a[i] = a[j]; 133 a[j] = T; 134 135 } 136 137 public void sort(int a[]) throws Exception 138 { 139 QuickSort(a, 0, a.length - 1); 140 } 141 } 142 | Popular Tags |