在学快速排序之间我们必须先要学会递归
递归就是方法调用其本身,达到循环目的。(递归需要有,递归关系式和递归出口 )
快速排序
基本思想
1.首先确定第一个数为基准数,确定左右两边的指针
2.让右边的指针先走,去找比当前基准数小的数字,找到后停止
3.让左边的指针后走,去找比当前基准数大的数字,找到后停止
4.左右指针值进行互换
5.当这两个指针相遇,让当前基准数和停止的位置互换
6.递归:重复操作。
代码
import java.util.Arrays;
public class kp {
public static void main(String[] args) {
int[] arr = new int[] { 8, 4, 5, 9, 7, 6, 1, 2 };
kp(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
private static void kp(int[] arr, int l, int r) {
if (l >= r) {
return;
}
int index = arr[l];
int i = l;
int j = r;
while (i != j) {
while (arr[j] >= index && i < j) {
j--;
}
while (arr[i] <= index && i < j) {
i++;
}
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
arr[l] = arr[i];
arr[i] = index;
kp(arr, l, i - 1);
kp(arr, i + 1, r);
}
}