//快速排序
public class Quicksort {
public static void main(String[] args) {
Quicksort qs = new Quicksort();
int[] quicksort = qs.quicksort(new int[] { 11, 8, 13, 9, 7, 1, 2, 5 });
for (int i : quicksort) {
System.out.print(i + ",");
}
}
public int[] quicksort(int[] arr) {
int begin = 0;// 开始
int end = arr.length - 1;// 结束
return qsort(arr, begin, end);
}
private int[] qsort(int[] arr, int begin, int end) {
if (begin >= end) {
return arr;
}
int q = partition(arr, begin, end); // 分区函数
arr = qsort(arr, begin, q - 1);
arr = qsort(arr, q + 1, end);
return arr;
}
// 分区函数
private int partition(int[] arr, int begin, int end) {
// 游标
int b = begin;
int e = end;
// 基准数
int val = arr[begin];
// 插入的位置
int insert = begin;
while (b <= e) {
while (b <= e) {
if (arr[e] < val) {
arr[insert] = arr[e];
insert = e;
break;
}
e--;
}
while (b <= e) {
if (arr[b] > val) {
arr[insert] = arr[b];
insert = b;
break;
}
b += 1;
}
}
arr[insert] = val;
return insert;
}
}
请大家指点