public class kuaipai {
public static void main(String[] args) {
int[] arr = {6, 1, 2, 7, 9, 3, 4, 5, 10, 8};
fbd(arr, 0, arr.length - 1);
for (int i : arr) {
System.out.print(i + " ");
}
}
private static void fbd(int[] arr, int left, int right) {
//如果右边小于左边 结束
if (right < left) {
return;
}
//当前的左右俩边的开始索引
int left0 = left;
int right0 = right;
//计算出基准数(当前排序最左边的)
int baseNumber = arr[left0];
while (left != right) {
//1.从右往左找比基准数小的
while (arr[right] >= baseNumber && right > left) {
right--;
}
//2.从左往右找比基准数大的
while (arr[left] <= baseNumber && right > left) {
left++;
}
//3.交换位置
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
}
//如果两边指向的索引相同 基准数归位(将基准数的位置和现在指向的位置互换)
int temp = arr[right];
arr[right] = arr[left0];
arr[left0] = temp;
fbd(arr, left0, left - 1);
fbd(arr, left + 1, right0);
}
}
快排(注释写在代码上)
最新推荐文章于 2021-11-30 13:09:59 发布