码迷,mamicode.com
首页 > 编程语言 > 详细

经典算法——快速排序

时间:2015-04-03 12:51:23      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

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

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

    }
}

经典算法——快速排序

标签:

原文地址:http://www.cnblogs.com/freedom-wangyb/p/4389478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!