回忆数组快速排序算法

先回忆一下快速排序算法的本质:快速排序是冒泡排序的改进,第一次排序是将一个枢轴元素(通常指定为第一个元素)插入到数组中合适的位置,使得枢轴左边的元素都小于枢轴,右边的元素都大于枢轴,这样原来的数组就切分成两个相对有序的数组,再对其进行快速排序。

具体做法:附设两个指针low,high,枢轴元素为第一个元素

首先从high开始,找到第一个小于枢轴的元素,将该元素与枢轴互换,然后从low的位置起向后搜索,找到第一个大于枢轴的元素,将该元素与枢轴互换,重复进行直到low==high。

    static int array[] ={48,20,27,85,79,98,45}; 
    public static void main(String[] args){
        System.out.println("排序以前的数组:");
        printArray();
        System.out.println("排序后的数组:");
        quickSort(0,array.length-1);        
        printArray();
    }
    private static void quickSort(int low ,int high) {
        if(low<high){
            int index =partition(low,high);
            quickSort(low, index-1);
            quickSort(index+1, high);
        }
        
    }
    private static int partition(int low, int high) {
 
        int temp =array[low];
        while(low<high){
            while(low<high&&array[high]>=temp){
                high--;
            }
            array[low] =array[high];
               while(low<high&&array[low]<=temp){
                low++;
            }
            array[high]=array[low];
                   }
        array[low]=temp;
               return low;
    }
    private static void printArray() {
        for(int i:array){
            System.out.print(i+" ");
        }
        System.out.println();
        
    }
原文地址:https://www.cnblogs.com/yuwenfeng/p/3092883.html