经典算法——快速排序

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

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);
        }

    }
}
posted @ 2015-04-03 11:10  前尘忆梦_博  阅读(168)  评论(0)    收藏  举报