Java教程

Java快速排序

本文主要是介绍Java快速排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java快速排序

/**
 * 快速排序
 *
 * @author yl
 */
public class QuickSort {

    public static void main(String[] args) {
        int[] array = {7, 6, 9, 3, 1, 5, 2, 4};
        System.out.println(Arrays.toString(quickSort(array,0,array.length-1)));
    }

    /**
     * 快速排序算法
     * 参考:https://blog.csdn.net/morewindows/article/details/6684558、https://blog.csdn.net/shujuelin/article/details/82423852
     * @param array
     * @param left
     * @param right
     * @return
     */
    public static int[] quickSort(int[] array,int left,int right) {
        if (left>right){
            return array;
        }

        // 将第一个数作为基准数
        int baseNum = array[left];
        // 左边数的下标
        int leftIndex=left;
        // 右边数的下标
        int rightIndex=right;

        while (leftIndex < rightIndex) {
            // 从右边开始找第一个小于基准数的数的下标
            while (leftIndex < rightIndex && array[rightIndex] >= baseNum) {
                rightIndex--;
            }
            // 从左边开始找第一个大于基准数的数的下标
            while (leftIndex < rightIndex && array[leftIndex] <= baseNum) {
                leftIndex++;
            }
            // 将找到的数左右互换
            if (leftIndex<rightIndex){
                int temp=array[leftIndex];
                array[leftIndex]=array[rightIndex];
                array[rightIndex]=temp;
            }
        }

        // 当左边下标等于右边下标时,将基准数和该下标对应数互换
        array[left]=array[leftIndex];
        array[leftIndex]=baseNum;

        // 递归调用
        quickSort(array,left,rightIndex-1);
        quickSort(array,rightIndex+1,right);

        return array;
    }

}
这篇关于Java快速排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!