黑马程序员技术交流社区

标题: 快速排序算法 [打印本页]

作者: 赵存金    时间: 2015-9-27 18:34
标题: 快速排序算法
/*
快速排序的基本思想是:

1.先从数列中取出一个数作为基准数。

2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

3.再对左右区间重复第二步,直到各区间只有一个数。
       
*/

class quickSort
{
        public static void quickSortDemo (int [] arr, int l,int r){
        if(l>=r)return;
        int low,high,key;
        low = l;
        high = r;
        key = arr[l];
        while(high > low){
                while(high > low && arr[high]>=key)
                        high--;
                        if(high>low){
                        arr[low] = arr[high];
                        low++;
                        }
                while(high>low && arr[low]<=key)
                        low++;
                        if(high>low){
                        arr[high]=arr[low];
                        high--;
                        }
                       
                        arr[low] = key;
                        quickSortDemo(arr, l,low-1 );
                        quickSortDemo(arr,low+1,r);

                }
               
}
public static void main(String[] args){
        int [] arr ={45,85,42,2,36,258,1,222,5};
        int l,r;
        l=0;
        r = arr.length-1;
        quickSortDemo(arr,l,r);
        for(int i=0;i<=r;i++){
                if(i==r)
                System.out.println(arr[i]);
                else
                        System.out.print(arr[i]+",");
               
                }
               

}
}
作者: 赵存金    时间: 2015-9-27 18:35
自己测试过了。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2