快排

import java.util.Arrays;

public class My {
    void quickSort(int[] arr, int start,int end){
        if(start>=end){ //必须start>=end
            return;
        }
        int temp=arr[start];
        int i=start;
        int j=end;
        while(i<j){
            while(i=temp){//右侧等于temp的不用动,只有小于temp时才被交换到左侧
                j--;
            }//如果在这i==j跳出循环,此时arr[i]是个无用的多余值
            arr[i]=arr[j];
            while(itemp){
                i++;
            }//如果在这i==j跳出循环,此时arr[j]是个无用的多余值
            arr[j]=arr[i];
        }
        //此时i==j,arr[i]==arr[j]==无用的多余值
        arr[i]=temp;
        quickSort(arr,start,i);
        quickSort(arr,i+1,end);
    }
    public static void main(String[] args){
        My my=new My();
        int[] arr={5,6,1,2,4,7,2,3,4,6,4};
        my.quickSort(arr,0,arr.length-1);
        System.out.println(Arrays.toString(arr));
    }
}

 

你可能感兴趣的:(快排)