算法之7-快速排序

来源:互联网 发布:php冒泡 编辑:程序博客网 时间:2024/06/07 00:37

本文是快速排序的java实现

package com.demo.sort;/** * Created by Zhang chunrong on 2016/10/3. */public class QuickSort {    public static void main(String args[]) {        int arr[] = new int[]{50, 1, 23, 32, 32, 322, 2, 89, 99, 67, 56};        int arrLen = arr.length;        quickSort(arr, 0, arrLen - 1);        for (int i = 0; i < arrLen; i++) {            System.out.print(arr[i] + " ");        }    }    //快速排序    private static void quickSort(int[] arr, int i, int idx) {        /*        * 1.先从数列中选择一个数作为基准数(pivot)        * 2.把数列中大于基准数的放在右边,把数列中小于基准数的放在左边        * 3.再对左右区间进行1,2步,直到各区间只有一个数        */        //边界条件        if (i >= idx) {            return;        }        int pivot = arr[i];        int start = i;        int end = idx;        while (i < idx) {            //先从右向左查找            while (i < idx && arr[idx] >= pivot) {                idx--;            }            //开始挖坑            arr[i] = arr[idx];            i++;            while (i < idx && arr[i] < pivot) {                i++;            }            arr[idx] = arr[i];            idx--;        }        //填上最后一个坑        arr[i] = pivot;        //对分区内容进行递归调用        quickSort(arr, start, i - 1);        quickSort(arr, i + 1, end);    }}


输出:


1 2 32 23 32 50 89 56 67 99 322 

0 0