八大排序-快速排序

亿奇学

关注

阅读 77

2022-01-09

快速排序(O(nlogn)):将数组第一个数当做基准数,定义两个指针分别指向待排序数组的左右两段,移动右边指针找到比基准数小的数停止,移动左边指针找到比基准数大的数停止,之后两个指针的值互换,继续寻找至两个指针重合,重合的数值和基准数互换。原第一个数到达正确位置,其左右进行递归快排。

 public static void quickSort(int[] arr,int left,int right){
        if(left >= right){
            return;
        }

        int base =arr[left];
        int i =left;
        int j =right;
        while(i!=j){
            while(arr[j] >=base && i<j){
                j--;
            }
            while(arr[i] <=base && i<j){
                i++;
            }
            int temp =arr[i];
            arr[i]=arr[j];
            arr[j]=temp;
        }
        arr[left]=arr[i];
        arr[i]=base;

        quickSort(arr,left,i-1);
        quickSort(arr,i+1,right);
    }

精彩评论(0)

0 0 举报