package com.itheima;
public class QuickSort {
public static void main(String[] args) {
// 定义数组
int[] arr = { 49, 11, 34, 23, 44, 54, 66, 4, 21, 75 };
// 创建对象
QuickSort qs = new QuickSort();
// 调用快速排序方法
quickSort(arr, 0, arr.length - 1);
// 遍历
qs.print(arr);
}
public static void quickSort(int[] arr, int low, int high) {
int i = low;
int j = high;
// 基准元素
int key = arr[low];
while (true) {
// high往前走(与基准元素比,比基准元素小就交换)
while (j > i) {
if (arr[j] < key) {
// 交换
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
break;
} else {
j--;
}
}
// i往后走
while (j > i) {
if (arr[i] > key) {
// 交换
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
break;
} else {
i++;
}
}
if (i == j) {
break;
}
// 终止条件
if (i > j) {
return;
}
// 基准左边元素
quickSort(arr, low, i - 1);
// 基准右边元素
quickSort(arr, i + 1, high);
}
}
public void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
System.out.print(arr[i]);
} else {
System.out.print(arr[i] + ",");
}
}
}
} |
|