@@ -56,14 +56,12 @@ private static void qsort(byte[] a, int lo, int hi) {
5656 private static int partition (byte [] a , int left , int right ) {
5757
5858 int lo = left ;
59- int hi = right ;
60- byte pivot = a [left ];
59+ int hi = right + 1 ;
60+ int pivot = a [left ];
6161
6262 while (lo < hi ) {
6363
64- while (a [hi ] > pivot && lo < hi ) {
65- hi --;
66- }
64+ while (a [--hi ] > pivot );
6765
6866
6967 while (a [lo ] <= pivot && lo < hi ) {
@@ -114,14 +112,12 @@ private static void qsort(char[] a, int lo, int hi) {
114112 private static int partition (char [] a , int left , int right ) {
115113
116114 int lo = left ;
117- int hi = right ;
118- char pivot = a [left ];
115+ int hi = right + 1 ;
116+ int pivot = a [left ];
119117
120118 while (lo < hi ) {
121119
122- while (a [hi ] > pivot && lo < hi ) {
123- hi --;
124- }
120+ while (a [--hi ] > pivot );
125121
126122
127123 while (a [lo ] <= pivot && lo < hi ) {
@@ -173,16 +169,12 @@ private static void qsort(short[] a, int lo, int hi) {
173169 private static int partition (short [] a , int left , int right ) {
174170
175171 int lo = left ;
176- int hi = right ;
177- short pivot = a [left ];
172+ int hi = right + 1 ;
173+ int pivot = a [left ];
178174
179175 while (lo < hi ) {
180176
181- while (a [hi ] > pivot && lo < hi ) {
182- hi --;
183- }
184-
185-
177+ while (a [--hi ] > pivot );
186178 while (a [lo ] <= pivot && lo < hi ) {
187179 lo ++;
188180 }
@@ -263,16 +255,12 @@ private static void qsort(int[] a, int lo, int hi) {
263255 private static int partition (int [] a , int left , int right ) {
264256
265257 int lo = left ;
266- int hi = right ;
258+ int hi = right + 1 ;
267259 int pivot = a [left ];
268260
269261 while (lo < hi ) {
270262
271- while (a [hi ] > pivot && lo < hi ) {
272- hi --;
273- }
274-
275-
263+ while (a [--hi ] > pivot );
276264 while (a [lo ] <= pivot && lo < hi ) {
277265 lo ++;
278266 }
@@ -323,14 +311,12 @@ private static void qsort(long[] a, int lo, int hi) {
323311 private static int partition (long [] a , int left , int right ) {
324312
325313 int lo = left ;
326- int hi = right ;
314+ int hi = right + 1 ;
327315 long pivot = a [left ];
328316
329317 while (lo < hi ) {
330318
331- while (a [hi ] > pivot && lo < hi ) {
332- hi --;
333- }
319+ while (a [--hi ] > pivot );
334320
335321
336322 while (a [lo ] <= pivot && lo < hi ) {
@@ -382,14 +368,12 @@ private static void qsort(float[] a, int lo, int hi) {
382368 private static int partition (float [] a , int left , int right ) {
383369
384370 int lo = left ;
385- int hi = right ;
371+ int hi = right + 1 ;
386372 float pivot = a [left ];
387373
388374 while (lo < hi ) {
389375
390- while (a [hi ] > pivot && lo < hi ) {
391- hi --;
392- }
376+ while (a [--hi ] > pivot );
393377
394378
395379 while (a [lo ] <= pivot && lo < hi ) {
@@ -442,15 +426,14 @@ private static void qsort(double[] a, int lo, int hi) {
442426 private static int partition (double [] a , int left , int right ) {
443427
444428 int lo = left ;
445- int hi = right ;
429+ int hi = right + 1 ;
446430 double pivot = a [left ];
447431
448432 while (lo < hi ) {
449433
450- while (a [hi ] > pivot && lo < hi ) {
451- hi --;
452- }
434+ while (a [--hi ] > pivot );
453435
436+
454437 while (a [lo ] <= pivot && lo < hi ) {
455438 lo ++;
456439 }
@@ -514,16 +497,12 @@ private static void qsort(Object[] a, int lo, int hi) {
514497 private static int partition (Object [] a , int left , int right ) {
515498
516499 int lo = left ;
517- int hi = right ;
500+ int hi = right + 1 ;
518501 Comparable pivot = ((Comparable ) a [left ]);
519502
520503 while (lo < hi ) {
521504
522- while (pivot .compareTo (a [hi ]) < 0 && lo < hi ) {
523- hi --;
524- }
525-
526-
505+ while (pivot .compareTo (a [--hi ]) < 0 );
527506 while (pivot .compareTo (a [lo ]) >= 0 && lo < hi ) {
528507 lo ++;
529508 }
@@ -536,8 +515,6 @@ private static int partition(Object[] a, int left, int right) {
536515 return lo ;
537516 }
538517
539-
540-
541518
542519
543520 @ SuppressWarnings ("rawtypes" )
@@ -558,15 +535,12 @@ private static void qsort(Object[] a, int lo, int hi, Comparator c) {
558535 private static int partition (Object [] a , int left , int right , Comparator c ) {
559536
560537 int lo = left ;
561- int hi = right ;
538+ int hi = right + 1 ;
562539 Object pivot = a [left ];
563540
564541 while (lo < hi ) {
565542
566- while (c .compare (pivot , a [hi ]) < 0 && lo < hi ) {
567- hi --;
568- }
569-
543+ while (c .compare (pivot , a [--hi ]) < 0 );
570544 while (c .compare (a [lo ], pivot ) <= 0 && lo < hi ) {
571545 lo ++;
572546 }
0 commit comments