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);

 
原文地址:https://www.cnblogs.com/mibing/p/10805920.html