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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© SuperLan 中级黑马   /  2016-11-11 23:00  /  1135 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.Arrays;
import java.util.Random;

public class QuickSort {

        public static void main(String[] args) {
               
        /*        递归: 自己调用自己
                    一直在动,反复的做一件事情
                     两者是否相遇   :  i ==  j时  两者相遇 ,基准数归位
       while()*/
                int [] arr = new int[1000000];
                Random rm = new Random();
               
                for (int i = 0; i < arr.length; i++) {
                            arr[i]  =  rm.nextInt();
                }
                System.out.println("快拍前");
                quickSort(arr,0,arr.length-1);
                System.out.println("快拍后");
                System.out.println(Arrays.toString(arr));
               
               
               
               
               
                //System.out.println(Arrays.toString(arr));
               
               
               
               
               
               
        }

       
        // 递归 得有出口
        private static void quickSort(int[] arr, int left, int right) {
                  
                 if(left > right){
                         return ;
                 }
                 
                 int i  = left;
                 int j  = right;
                 int baseNum = arr[left];
                 // 开始移动
                 // 没有相遇
                 while( i != j){
                         // 从右边开始解索,如果这个数 大于基准数的话,移动
                         while(arr[j] >= baseNum && j > i){
                                 j--;
                         }
                         while(arr[i] <= baseNum && i  < j){
                                 i++;
                         }
                         //两者交换位置
                         int temp = arr[i];
                         arr[i]  = arr[j];
                         arr[j] = temp;
                 }
                 // 一旦出了while循环,表示两者相遇
                 // 基准数归位 : 相遇的元素 和 第一位基准数交换位置
                  arr[left]= arr[i];
                  // 把基准数的值给相遇的数
                  arr[i] = baseNum;
               
                  
                  quickSort(arr,left,i-1);
                  quickSort(arr,j+1,right);
               
        }
       
}

3 个回复

倒序浏览
回复 使用道具 举报
既然分享了,就应该讲的比较细。这样基础代码,到处都是
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
L10052108 发表于 2016-11-12 12:39
既然分享了,就应该讲的比较细。这样基础代码,到处都是

关键我也没听明白呀
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马