• 快速排序个人理解


    
    

      将整个数组分为三个部分,中轴,中轴前部,中轴后部。每一次排序,前一部分<中轴<后一部分。
    然后采用分而治之的思想继续排序。

    其算法如下:

    public static void quickSort(int[] array,int low,int high){
                    if(low>=high){
                        return;
                    }
                    int lowIndex=low;
                    int highIndex=high;
                    int middle=array[lowIndex];
                    while(lowIndex<highIndex){
                        //将第一个数(中轴)与最后一个数进行比较,如果第一个数比最后一个数小,就和其前一个数
                        //进行比较,以此类推。直到找到比第一个数小的值
                        while(lowIndex<highIndex&&middle<array[highIndex]){
                            highIndex--;
                        }
                        //将比第一个数(中轴)大的数放入中轴处。
                        if(lowIndex<highIndex){
                            array[lowIndex++]=array[highIndex];
                        }
                        //经中轴与前一部分刚刚中轴所在处的后一位数进比较,如果比该数大,那么就和该数的后一位数进行比较,
                        //以此类推。直到找到比中轴大的数。
                        while(lowIndex<highIndex&&middle>array[lowIndex]){
                            lowIndex++;
                        }
                        //将比中轴小的数放入刚刚空出来的数那个位置。
                        if(lowIndex<highIndex){
                            array[highIndex--]=array[lowIndex];
                        }
                        array[lowIndex]=middle;
                        quickSort(array, low,lowIndex-1 );
                        quickSort(array, lowIndex+1, high);
                    }
                
            }
  • 相关阅读:
    5 November
    31 October
    K-th Path
    P1525 关押罪犯
    dp-棋盘形dp
    P1462 通往奥格瑞玛的道路
    noip2017部分题目
    洛谷orz--尺取法
    树形dp
    最短路练习
  • 原文地址:https://www.cnblogs.com/orchid9/p/7611866.html
Copyright © 2020-2023  润新知