-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMyQuick1.java
More file actions
54 lines (47 loc) · 1.15 KB
/
Copy pathMyQuick1.java
File metadata and controls
54 lines (47 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.clay;
/**
* MyQuick1
*/
public class MyQuick1 {
public static void sort(Comparable[] a) {
sort(a, 0, a.length - 1);
}
private static void sort(Comparable[] a, int lo, int hi) {
if (hi <= lo + 10) {
Insertion.sort(a);
}
int j = partition(a, lo, hi);
sort(a, lo, j - 1);
sort(a, j, hi);
}
private static int partition(Comparable[] a, int lo, int hi) {
int i = lo, j = hi + 1;
Comparable v = a[lo];
while (true) {
while (less(a[++i], v)) {
if (i == hi) {
break;
}
}
while (less(v, a[--j])) {
if (j == lo) {
break;
}
}
if (i <= j) {
break;
}
exch(a, i, j);
}
exch(a, lo, j);
return j;
}
private static boolean less(Comparable a, Comparable b) {
return a.compareTo(b) < 0;
}
private static void exch(Comparable[] a, int i, int j) {
Comparable v = a[i];
a[i] = a[j];
a[j] = v;
}
}