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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fenzheng 中级黑马   /  2014-3-14 23:52  /  748 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么是快速排序啊??????老师没讲,我不会啊,谁会睡会谁会????????????????????????

1 个回复

正序浏览
这是基础测试里的一道题吧,下面是我当初写的,仅供参考~~~
public class Test1 {
       
        public static void main(String[] args) {
                //定义一个int数组,测试quickSort方法,打印排序前后数组
                int [] arr={3,3,1,3,9,6,6,7,9,0,2,10,100};
                System.out.println("原始数组:");
                printArr(arr);
                quickSort(arr,0,arr.length-1);
                System.out.println("排序后的数组:");
                printArr(arr);
        }
        /*将每次迭代时的左角标元素作为基准值key, 以key为基准,
         将数组元素划分在左右两侧,左边的元素小于等于key,右边的元素大于key; 然后对左右两侧的2个
         子数组按照这种方式进行递归排列,最后得到数组就是从小到大排好序的*/
        public static void quickSort(int [] arr, int left,int right){
                int i=left;
                int j=right;
                int key=arr[i];
                while(i<j){
                        while(j>i && arr[j]>=key){
                                j--;
                        }
                        arr[i]=arr[j];       
                        while(i<j && arr[i]<=key){
                                i++;
                        }
                        arr[j]=arr[i];       
                       
                }
                arr[i]=key;       
                if(i-1>left){
                        quickSort(arr,left,i-1);
                }
                if(j+1<right){
                        quickSort(arr,j+1,right);
                }
               
       
               
        }
        //将数据遍历打印功能封装成函数,方便使用
        public static void printArr(int []arr){
                int i;
                for(i=0;i<arr.length;i++){
                        //数组元素间以,隔开
                        if(i!=arr.length-1){
                                System.out.print(arr[i]+", ");
                        }
                        //数组最后一个数后面不写,
                        else{
                                System.out.println(arr[i]);
                        }
                }
        }

}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马