import java.util.Arrays;
public class quickSort {
public static void main(String[] args) {
int[] arr ={3,4,10,6,6,7,5,-2,10,8};
System.out.println("排序前:"+ Arrays.toString(arr));
quickSort(arr,0,arr.length-1);
System.out.println("排序后:"+Arrays.toString(arr));
}
/**
* 快速排序
* @param arr
* @param left
* @param right
*/
private static void quickSort(int[] arr,int left,int right) {
//判断传入参数合法性
if (left > right){
return;
}
//定义标准值
int base = arr[left];
//定义最左边下标
int i = left;
//定义最右边下标
int j = right;
//开始循环遍历,不相等即没有相遇
while(i != j){
while(arr[j] >= base && i < j){
j--;
}
while(arr[i] <= base && i < j){
i++;
}
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
//两个光标相遇后将基准数和重合数调换
arr[left] = arr[i];
arr[i] = base;
//此时基准数已经归位,左边的都比他小,右边的都比他大
//排左边的
quickSort(arr,left, i - 1);
//排右边的
quickSort(arr,i + 1,right);
}
}
JAVA-快速排序
最新推荐文章于 2023-06-04 10:54:50 发布