【java学习笔记23】数组排序算法之快速排序

package ArraySorted;

import java.util.Arrays;

public class ArrayTest09 {

    public static void main(String[] args) {

        int[] array = {4,10,8,7,5,6,1,9};

        QuickSort.quicksort(array,0,array.length-1);

        System.out.println(Arrays.toString(array));
    }
}

 

package ArraySorted;

public class QuickSort {

    public static void quicksort(int[] array,int start,int end){
        // 对左右两个分区进行递归调用
        if (start < end){
            int index = getIndex(array,start,end);
            quicksort(array,start,index-1);
            quicksort(array,index+1,end);
        }
    }

    private static int getIndex(int[] array,int start,int end){
        int i = start;
        int j = end;
        int x = array[i];

        while (i < j){

            // 从后往前找
            while (i<j && array[j] >=x){
                j--;
            }
            if (i < j){
                array[i] = array[j];
                i++;
            }

            // 从前往后找
            while (i<j && array[i] < x){
                i++;
            }
            if (i < j){
                array[j] = array[i];
                j--;
            }
        }
        array[i] = x;
        return i;
    }
}

 

posted @ 2021-01-06 08:55  愚人李愚  阅读(115)  评论(0编辑  收藏  举报