A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jlnu_wl 中级黑马   /  2015-7-1 10:47  /  264 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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();
               
        }

}


3 个回复

倒序浏览
……………………

       if(low>=high)
                        return ;//low小于high,直接返回
……………………
回复 使用道具 举报
楼主那句怎么理解啊??
回复 使用道具 举报
路过学习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马