经典算法——快速排序

快速排序的基本思想(分治法):

1.先从数列中取出一个数作为基准数

2.分区过程:将比基准数大的放在其右边,小的放在其左边

3.再对左右区间重复分区操作,直到各区间只有一个数

快排Java代码

package quicksorttest;



import java.util.Scanner;



public class QuicksortTest {



    static int[] array = new int[10];



    public static void main(String[] args) {

        System.out.println("Please enter the array[10] : ");

        Scanner ascanner = new Scanner(System.in);

        for (int i = 0; i < array.length; i++) {

            array[i] = ascanner.nextInt();

        }

        quickSort(0, array.length - 1);

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

    }



    /**

     * 快速排序

     * 

     * @param left

     *            分段数组左侧index

     * @param right

     *            分段数组右侧index

     */

    static void quickSort(int left, int right) {

        if (left < right) {

            int i = left, j = right, key = array[left];

            while (i < j) {

                while (i < j && array[j] >= key) {

                    j--;

                }

                if (i < j) {

                    // i++,先使用i,后++

                    array[i++] = array[j];

                }

                while (i < j && array[i] <= key) {

                    i++;

                }

                if (i < j) {

                    array[j--] = array[i];

                }

            }

            array[i] = key;

            // 递归调用

            quickSort(left, i - 1);

            quickSort(i + 1, right);

        }



    }

}

你可能感兴趣的:(快速排序)