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
|
private static void swap(int[] data, int i, int j) {
data[i] = data[i] ^ data[j]; data[j] = data[i] ^ data[j]; data[i] = data[i] ^ data[j];
}
private static void subSort(int[] data, int start, int end) { if (start < end) { int base = data[start]; int low = start; int high = end + 1; while (true) { while (low < end && data[++low] - base <= 0) { } while (high > start && data[--high] - base >= 0) { } if (low < high) { swap(data, low, high); } else { break; } } swap(data, start, high);
subSort(data, start, high - 1); subSort(data, high + 1, end); } }
public static void quickSort(int[] data) { subSort(data, 0, data.length - 1); }
public static void (String[] args) {
int[] data = {10,7,2,4,7,62}; quickSort(data); Arrays.stream(data).forEach(System.out::println); }
|
近期评论