Skip to content

Commit 714e820

Browse files
committed
Draft
1 parent 338327d commit 714e820

1 file changed

Lines changed: 31 additions & 65 deletions

File tree

SortingAlgorithm/Java/QuickSort/LPQuickSort.java

Lines changed: 31 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -56,21 +56,16 @@ 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 + 1;
60-
int pivot = a[left];
59+
int hi = right;
60+
byte pivot = a[left];
6161

6262
while(lo < hi) {
6363

64-
while(a[--hi] > pivot);
65-
66-
67-
while(a[lo] <= pivot && lo < hi) {
68-
lo++;
69-
}
64+
while(a[hi] > pivot) --hi;
65+
while(a[lo] <= pivot && lo < hi) ++lo;
7066

7167
swap(a, lo, hi);
7268
}
73-
7469
swap(a, left, lo);
7570

7671
return lo;
@@ -112,21 +107,16 @@ private static void qsort(char[] a, int lo, int hi) {
112107
private static int partition(char[] a, int left, int right) {
113108

114109
int lo = left;
115-
int hi = right + 1;
116-
int pivot = a[left];
110+
int hi = right;
111+
char pivot = a[left];
117112

118113
while(lo < hi) {
119114

120-
while(a[--hi] > pivot);
121-
122-
123-
while(a[lo] <= pivot && lo < hi) {
124-
lo++;
125-
}
115+
while(a[hi] > pivot) --hi;
116+
while(a[lo] <= pivot && lo < hi) ++lo;
126117

127118
swap(a, lo, hi);
128119
}
129-
130120
swap(a, left, lo);
131121

132122
return lo;
@@ -169,22 +159,20 @@ private static void qsort(short[] a, int lo, int hi) {
169159
private static int partition(short[] a, int left, int right) {
170160

171161
int lo = left;
172-
int hi = right + 1;
173-
int pivot = a[left];
162+
int hi = right;
163+
short pivot = a[left];
174164

175165
while(lo < hi) {
176166

177-
while(a[--hi] > pivot);
178-
while(a[lo] <= pivot && lo < hi) {
179-
lo++;
180-
}
167+
while(a[hi] > pivot) --hi;
168+
while(a[lo] <= pivot && lo < hi) ++lo;
181169

182170
swap(a, lo, hi);
183171
}
184-
185172
swap(a, left, lo);
186173

187174
return lo;
175+
188176
}
189177

190178
private static void swap(short[] a, int i, int j) {
@@ -255,19 +243,16 @@ private static void qsort(int[] a, int lo, int hi) {
255243
private static int partition(int[] a, int left, int right) {
256244

257245
int lo = left;
258-
int hi = right + 1;
246+
int hi = right;
259247
int pivot = a[left];
260248

261249
while(lo < hi) {
262250

263-
while(a[--hi] > pivot);
264-
while(a[lo] <= pivot && lo < hi) {
265-
lo++;
266-
}
251+
while(a[hi] > pivot) --hi;
252+
while(a[lo] <= pivot && lo < hi) ++lo;
267253

268254
swap(a, lo, hi);
269255
}
270-
271256
swap(a, left, lo);
272257

273258
return lo;
@@ -311,21 +296,16 @@ private static void qsort(long[] a, int lo, int hi) {
311296
private static int partition(long[] a, int left, int right) {
312297

313298
int lo = left;
314-
int hi = right + 1;
299+
int hi = right;
315300
long pivot = a[left];
316301

317302
while(lo < hi) {
318303

319-
while(a[--hi] > pivot);
320-
321-
322-
while(a[lo] <= pivot && lo < hi) {
323-
lo++;
324-
}
304+
while(a[hi] > pivot) --hi;
305+
while(a[lo] <= pivot && lo < hi) ++lo;
325306

326307
swap(a, lo, hi);
327308
}
328-
329309
swap(a, left, lo);
330310

331311
return lo;
@@ -368,21 +348,16 @@ private static void qsort(float[] a, int lo, int hi) {
368348
private static int partition(float[] a, int left, int right) {
369349

370350
int lo = left;
371-
int hi = right + 1;
351+
int hi = right;
372352
float pivot = a[left];
373353

374354
while(lo < hi) {
375355

376-
while(a[--hi] > pivot);
377-
378-
379-
while(a[lo] <= pivot && lo < hi) {
380-
lo++;
381-
}
356+
while(a[hi] > pivot) --hi;
357+
while(a[lo] <= pivot && lo < hi) ++lo;
382358

383359
swap(a, lo, hi);
384360
}
385-
386361
swap(a, left, lo);
387362

388363
return lo;
@@ -426,21 +401,16 @@ private static void qsort(double[] a, int lo, int hi) {
426401
private static int partition(double[] a, int left, int right) {
427402

428403
int lo = left;
429-
int hi = right + 1;
404+
int hi = right;
430405
double pivot = a[left];
431406

432407
while(lo < hi) {
433408

434-
while(a[--hi] > pivot);
435-
436-
437-
while(a[lo] <= pivot && lo < hi) {
438-
lo++;
439-
}
409+
while(a[hi] > pivot) --hi;
410+
while(a[lo] <= pivot && lo < hi) ++lo;
440411

441412
swap(a, lo, hi);
442413
}
443-
444414
swap(a, left, lo);
445415

446416
return lo;
@@ -497,15 +467,13 @@ private static void qsort(Object[] a, int lo, int hi) {
497467
private static int partition(Object[] a, int left, int right) {
498468

499469
int lo = left;
500-
int hi = right + 1;
470+
int hi = right;
501471
Comparable pivot = ((Comparable) a[left]);
502472

503473
while(lo < hi) {
504474

505-
while(pivot.compareTo(a[--hi]) < 0);
506-
while(pivot.compareTo(a[lo]) >= 0 && lo < hi) {
507-
lo++;
508-
}
475+
while(pivot.compareTo(a[hi]) < 0) --hi;
476+
while(pivot.compareTo(a[lo]) >= 0 && lo < hi) ++lo;
509477

510478
swap(a, lo, hi);
511479
}
@@ -535,15 +503,13 @@ private static void qsort(Object[] a, int lo, int hi, Comparator c) {
535503
private static int partition(Object[] a, int left, int right, Comparator c) {
536504

537505
int lo = left;
538-
int hi = right + 1;
506+
int hi = right;
539507
Object pivot = a[left];
540508

541509
while(lo < hi) {
542510

543-
while(c.compare(pivot, a[--hi]) < 0);
544-
while(c.compare(a[lo], pivot) <= 0 && lo < hi) {
545-
lo++;
546-
}
511+
while(c.compare(pivot, a[hi]) < 0) --hi;
512+
while(c.compare(a[lo], pivot) <= 0 && lo < hi) ++lo;
547513

548514
swap(a, lo, hi);
549515
}

0 commit comments

Comments
 (0)