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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

怎么实现对数组的快速排序?看了一些资料,没看明白

评分

参与人数 1黑马币 +3 收起 理由
杨佳名 + 3 淡定

查看全部评分

9 个回复

正序浏览
郑飞 高级黑马 2014-11-14 19:16:53
10#
郑飞 发表于 2014-11-14 19:11
给你代码吧,平时敲的,你看下这个会不会好理解点,反正我刚开始是自己推了几次才明白的;
...

用了递归,尽量少变量少返回值,我为了方便打印,加了返回值,你自己改下就好;
回复 使用道具 举报
郑飞 高级黑马 2014-11-14 19:11:01
9#
给你代码吧,平时敲的,你看下这个会不会好理解点,反正我刚开始是自己推了几次才明白的;
  1. public static int[] quick(int[] arr,int min,int max)
  2.         {
  3.                 int min0=min;
  4.                 int max0=max;
  5.                 if(min<max)
  6.                 {
  7.                         int temp = arr[min];
  8.                         while(min<max)
  9.                         {
  10.                                 while(min<max&&arr[max]>=temp)
  11.                                         max--;
  12.                                 arr[min] = arr[max];
  13.                                 while(min<max&&arr[min]<=temp)
  14.                                         min++;
  15.                                 arr[max] = arr[min];
  16.                         }
  17.                         arr[min] = temp;
  18.                         quick(arr,min0,min-1);
  19.                         quick(arr,min+1,max0);
  20.                 }
  21.                 return arr;
  22.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

回复 使用道具 举报
工具类,才是王道
回复 使用道具 举报
cbb 中级黑马 2014-11-14 10:12:52
7#
array.sort()………
回复 使用道具 举报
楼主说的是快速排序算法吧 找个快排的demo 然后用打印语句看他怎么排的 或者自己画图推
回复 使用道具 举报
用Arrays类里面的sort()方法,这个针对数组排序的!!!!
回复 使用道具 举报
嗯...上面的可以,但是也可以自己写..
实际上的意思是,
定义了一个中间变量,保存了一个数据后,然后赋值.
int temp = a;
a= b;
b= temp;
回复 使用道具 举报
楼上正解!!
回复 使用道具 举报
用工具类Arrays。假设已有一个数组int[] a=new int[1,5,4,6];
用Arrays.rsort(a);就是对该数组进行升序排序
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马