01快排模板

2021-09-28 10:13:42 浏览数 (1)

确定边界 选中目标 小于它的放左边,大于它的放右边 递归左右两边

代码语言:javascript复制
    /**
     * 快排模板
     */
    static void quitSort(int [] arr ,int l,int r){
        if(l>=r) return ;
        int i=l-1,j=r 1;
        int target=arr[l];//选中左边的值为目标值
        while(i<j){
          do {
              i  ;
          }while(arr[i]<target);//小于选中的数 放到左边`
            do {
                j--;
            }while(arr[j]>target);//大于选中的数 放到右边
            // i<j是停止,那么左右都不满足情况 此时交换ij的值
            if(i<j){
                swap(arr,i,j);
            }
        }
 
        //完事之后把arr[j] 左右两边的值继续进行快排  这里一定是j
        quitSort(arr,l,j);
        quitSort(arr,j 1,r);
    }
 
    private static void swap(int[] arr, int i, int j) {
        int temp=arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
    }
 

0 人点赞