package 十大排序;
public class 快速排序 {
public static void main(String[] args) {
int[] arr = {
6, 5, 4, 3, 2, 1};
sort(arr, 0, arr.length-1);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
private static void sort(int[] arr, int p, int r) {
if (p < r) {
int q = partition(arr, p, r);
sort(arr, p, q - 1);
sort(arr, q + 1, r);
}
}
public static int partition(int[] arr, int p, int r) {
int pivot = arr[p];
int sp = p +1;
int big = r;
while (sp <= big) {
if (arr[sp] <= pivot) {
sp++;
} else {
//交换
int temp = arr[big];
arr[big] = arr[sp];
arr[sp] = temp;
big--;
}
}
//交换
int temp = arr[big];
arr[big] = pivot;
arr[p] = temp;
return big;
}
}
java算法排序之快速排序(1)单向扫描分区法
猜你喜欢
转载自blog.csdn.net/qq_42794826/article/details/108992072
今日推荐
周排行