DESKTOP-GLJFHBB_20200904-常虎科

一、问题陈述:

#### 如何理解快排思想?

快速排序是怎样进行交换排序的?


public static void quickSort(int []arr,int low,int high) {   
    //使用双指针
    int i = low;
    int j = high;
    if(i>j) {
        return;
    }
    int temp = arr[low];//将第一个值作为基准
    while(i<j) {
        while (i < j && temp <= arr[j]) {
            j--;
        }
        
        while (i < j && temp >= arr[i]) {
            i++;
        }
        if(i<j) {
            arr[j]^=arr[i];
            arr[i]^=arr[j];
            arr[j]^=arr[i];
        }   
    }
    arr[low]=arr[i];
    arr[i]=temp;
    quickSort(arr, low,j-1);//基准值左侧下一次递归调用,这次循环high=j-1;
    quickSort(arr, j+1, high);  //基准值右侧下一次递归调用,这次循环high=j+1;
}
public static void main(String[] args) {
    int [] arr = {3,4,7,2,6,8,5};
    quickSort(arr, 0, arr.length-1);//调用quickSort方法,将low初始化为0,high初始化为
                                      arr.length-1.
    for(int s :arr)
    System.out.println(s);
}
}

二、每日吐槽;

加油。