黑马程序员技术交流社区

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

作者: jlnu_wl    时间: 2015-7-1 10:47
标题: 快速排序
package da23_Thread;

public class Test001 {

        public static void main(String[] args) {
                int a[]=new int[]{100,40,60,87,34,11,56,0};
                System.out.println("未排序之前的数据:");
                print(a);
                System.out.println("排序之后的数据:");
                sort(a,0,a.length-1);
                print(a);

        }

        private static void sort(int[] a, int low, int high) {
                if(low>=high)
                        return ;//low小于high,直接返回
                if((high-low)==1)//如果只有两个数字,直接比较
                {
                        if(a[0]>a[1])
                                swap(a,0,1);
                        return ;
                }
                int pivot=a[low];//取第一个数作为中间数
                int left=low+1;
                int right=high;
                while(left<right)
                {
                        //从左边开始找
                        while(left<right && left<=right)
                        {
                                //如果左小于右侧者一直循环
                                if(a[left]>pivot)
                                        break;
                                left++;//左下标右边走一点
                        }
                        //从右边开始找
                        while(left<=right && right>low)
                        {
                                //如果右小于左侧者一直循环
                                if(a[right]<=pivot)
                                        break;
                                right--;
                               
                        }
                        if(left<right)
                                swap(a, right, left);
                }
                swap(a, low, right);
                sort(a,low,right);
                sort(a, right+1, high);
               
               
        }

        private static void swap(int[] array, int i, int j) {
                int temp;
                temp=array[i];
                array[i]=array[j];
                array[j]=temp;
               
        }

        private static void print(int[] a) {
                for(int i:a)
                        System.out.print(i+" ");
                System.out.println();
               
        }

}



作者: wengjialiang    时间: 2015-7-1 13:55
……………………

       if(low>=high)
                        return ;//low小于high,直接返回
……………………
作者: wengjialiang    时间: 2015-7-1 14:01
楼主那句怎么理解啊??
作者: zlpiano    时间: 2015-7-1 14:33
路过学习一下




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