java實現快速排序

    public static int quickSort(int[] arr,int i,int j) {
        //肯定一個基準數,快速排序
        int baseNum=arr[i];
        //從左向右尋找索引
        int left=i;
        //從右向左尋找索引
        int right=j;
        while (left<right) {
             //先從右向左掃描
            while (arr[right]>=baseNum&&right>left) {
                right--;
            }
            //從左向右
            while (arr[left]<=baseNum&&left<right) {
                left++;
            }
            
            //兩個方向是否相遇
            if (left==right) {
                //將基準數與當前值交換
                int temp=arr[left];
                arr[left]=baseNum;
                arr[i]=temp;
            }
            
            //交換數據
            int swap=arr[left];
            arr[left]=arr[right];
            arr[right]=swap;
        }
        return right;
    }
    
    public static int[] Sort(int[] arr,int i,int j) {
        if (i>=j) {
            return arr;
        }
        int middposition=quickSort(arr,i,j);
        Sort(arr,i,middposition-1);
        Sort(arr, middposition+1, j);
        return arr;
    }

調用:

int[] arr= {6, 1, 2 ,7 ,9 ,3 ,4 ,5, 10 ,8};
int[] sortArr=Sort(arr,0,arr.length-1);ui

相關文章
相關標籤/搜索