java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。本站提供基于Java框架struts,spring,hibernate等的桌面应用、web交互及移动终端的开发技巧与资料

保持永久学习的心态,将成就一个优秀的你,来 继续搞起java知识。

1package com.shusheng.quickSort;

/**
 * 快排(画图分析)
 * @author Administrator
 */
public class QuickSort {

    /**
     * 快排的public方法
     * @param array 需要快排的数组
     * @param low 
     * @param high
     */
    public static void quickSort(int[] array,int low,int high){
        if(low>=high) return;//如果low>=high,就不用再排序了,因为low=high时待排序列就只有一个元素了,这个条件也是迭代结束条件
        int parentLow = low; //记录待排区间的最低位置,下面递归要用
        int parentHigh = high;//记录待排区间的最高位置,下面递归要用
        int pivotKey = array[low];//中枢,就是将待排序列分成两半的中轴
        //必须保证低位指针不超过高位指针,如果low>=high,说明已经成功将待排序列分成两半了
        while(low<high){

            //当array[high]大于中轴,就让high继续向low方向移动,直到low与high相等或找到一个比中轴小的数
            while(low<high&&array[high]>pivotKey) {high--;}
            //如果low<high,说明上面找到了比中轴小的数,就应该将该数放到low端
            if(low<high)
                array[low++] = array[high];//将该数放入到low的位置,然后low位置向high方向移动一位(作图分析)

            //当low<high且low指向的值小于中轴,就让low向high方向移动,直到找到一个比中轴大的数或者直到low>=high
            while(low<high&&array[low]<pivotKey) {low++;}
            //如果low<high,说明上面找到了比中轴大的数,就应该放在high端
            if(low<high)
                array[high--] = array[low];//将比中轴大的数放入high的位置,然后high向low位置移动一位
        }

        //当上面while循环结束时,说明low=high,说明已经成功将待排序列分成两半,这个时候需要将中轴的值移到待排序列的中间位置
        array[low] = pivotKey;
        //递归
        quickSort(array, parentLow, low-1);//上面将待排序列一分为二后,这里再将前半部分(即parentLow到中轴)进行递归
        quickSort(array, low+1, parentHigh);//将后半部分(即中轴到parentHigh)进行递归
    }

    /**
     * 测试方法
     * @param args
     */
    public static void main(String[] args) {
        int[] args1 = {12,53,48,26,42,62,46,45};
        quickSort(args1,0,args1.length-1);
        for (int i = 0; i < args1.length; i++) {
            System.out.println(args1[i]);
        }
    }

}

有问题欢迎交流。

快速排序Java快排Java快速排序

因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的分享。

后续会有更多的精彩的内容分享给大家。