public class QuickSort {
public static void quickSort(int[] arr) {
int start = 0;
int end = arr.length - 1;
quickSort(arr, start, end);
}
public static void quickSort(int[] arr, int start, int end) {
if (start < end) {
int mid = partition2(arr, start, end);
quickSort(arr, start, mid - 1);
quickSort(arr, mid + 1, end);
}
}
public static int partition(int[] arr, int start, int end) {
int pivot = arr[start];
int emptyIndex = start;
int left = start + 1;
int right = end;
while (left <= right) {
while (emptyIndex < right) {
if (arr[right] <= pivot) {
arr[emptyIndex] = arr[right];
emptyIndex = right;
}
right--;
}
while (emptyIndex > left) {
if (arr[left] > pivot) {
arr[emptyIndex] = arr[left];
emptyIndex = left;
}
left++;
}
}
arr[emptyIndex] = pivot;
return emptyIndex;
}
public static int partition2(int[] arr, int start, int end) {
int pivot = arr[start];
int index = start;
for (int i = start + 1; i <= end; i++) {
if (arr[i] <= pivot) {
swrap(arr, ++index, i);
}
}
swrap(arr, start, index);
return index;
}
public static void swrap(int[] arr, int index1, int index2) {
int temp = arr[index1];
arr[index1] = arr[index2];
arr[index2] = temp;
}
public static void main(String[] args) {
int[] arr = {5, 3, 5, 6, 8, 5, 10, 50, -9, -5, 20};
quickSort(arr);
for (int i : arr) {
System.out.print(i + " ");
}
}
}
手撸快速排序
最新推荐文章于 2020-11-24 16:15:36 发布