八大排序算法之快速排序

来源:互联网 发布:雪梨有几个淘宝店铺 编辑:程序博客网 时间:2024/05/17 22:12
/** * Created by leixingbang on 2017/9/7. * 快排最主要思想是分治思想: * (1)找出基线条件 * (2)不断拆分,缩小问题规模,使其满足基线条件 *  对快排来说 *  (1)基线条件:空数组或者只有一个元素的数组 *  (2)将大的数组拆分为两个满足条件的小数数组+基准值:左侧小于基准值的子数组+基准值+右侧大于基准值的子数组 *  (3)递归拆分子数组,使其满足条件 */public class MyQuickSort2 {    public static int getMiddleIndex(int []array,int i,int j)    {        int middle=array[i];//任选一个元素作为基准值,这里选择第一个元素作为基准条件        while (i<j)        {            while(i<j) {                //从右向左找到比基准条件小的数字,并将其位置与middle所在的位置进行狡猾                if(array[j]>=middle)                   j--;                else { //找到该位置                    array[i] = array[j];                    break;                }            }            while (i<j)            {                //从左向右找到比基准条件大的数字                if(array[i]<=middle)                    i++;                else {                    array[j]=array[i];                    break;                }            }        }        array[i]=middle;        return i;    }   public static void sort(int []array,int low,int high)   {       //low<high用于控制边界条件,假如只有1个元素,则low=high=0       //加入只有两个元素,则调用getMidlldleIndex后,相当于对调,再次sort进入只有一个元素状态。       if(low<high) {           int index = getMiddleIndex(array, low, high);           sort(array, low, index - 1);           sort(array, index + 1, high);       }   }    public static void main(String[] args) {        int []array={5,3,6,1,2};       // getMiddleIndex(array,0,array.length-1);        sort(array,0,array.length-1);        for(int i=0;i<array.length;i++)        {            System.out.print(array[i]+",");        }    }}

原创粉丝点击