Skip to content

Commit 338327d

Browse files
committed
improved performance
1 parent c3355e6 commit 338327d

1 file changed

Lines changed: 22 additions & 48 deletions

File tree

SortingAlgorithm/Java/QuickSort/LPQuickSort.java

Lines changed: 22 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)