排序算法——快速排序

  • 排序逻辑

    确认一个基准数,把比基准数大的放在右边,小的放在左边,递归下去实现排序

    • 初始队列

    • 第一轮

    • 第二轮

  • 代码示例

    public static void quickSort(int[] arr,int start, int end){
        if(start<end){
            //以第一位为基准数
            int stard = arr[start];
            //低位游标和高位游标
            int low = start;
            int high = end;
            while(low<high){
                //从高位往低位找,如果该数小于基准数,则把该数放在低位
                while(low<high && stard<=arr[high]){
                    high--;
                }
                arr[low] = arr[high];
                //从低位往高位找,如果该数大于基准数,则把该数放在高位
                while(low<high && stard>=arr[low]){
                    low++;
                }
                arr[high] = arr[low];
            }
            arr[low] = stard;
            quickSort(arr,start,low);
            quickSort(arr,low+1,end);
        }
    }
    
  • 时间复杂度
    O(nlogn)

posted @ 2020-07-21 16:47  布小星  阅读(101)  评论(0)    收藏  举报