黑马程序员技术交流社区

标题: 怎么实现对数组的快速排序?看了一些资料,没看明白 [打印本页]

作者: youtianlong123    时间: 2014-11-13 17:24
标题: 怎么实现对数组的快速排序?看了一些资料,没看明白
怎么实现对数组的快速排序?看了一些资料,没看明白
作者: 冥夜    时间: 2014-11-13 17:48
用工具类Arrays。假设已有一个数组int[] a=new int[1,5,4,6];
用Arrays.rsort(a);就是对该数组进行升序排序
作者: 计算机小菜鸟    时间: 2014-11-13 20:09
楼上正解!!
作者: qq272936993    时间: 2014-11-13 20:25
嗯...上面的可以,但是也可以自己写..
实际上的意思是,
定义了一个中间变量,保存了一个数据后,然后赋值.
int temp = a;
a= b;
b= temp;
作者: 焦旭宁1    时间: 2014-11-13 21:06
用Arrays类里面的sort()方法,这个针对数组排序的!!!!
作者: 郑飞    时间: 2014-11-14 09:16
楼主说的是快速排序算法吧 找个快排的demo 然后用打印语句看他怎么排的 或者自己画图推
作者: cbb    时间: 2014-11-14 10:12
array.sort()………
作者: 高昌德    时间: 2014-11-14 10:27
工具类,才是王道
作者: 郑飞    时间: 2014-11-14 19:11
给你代码吧,平时敲的,你看下这个会不会好理解点,反正我刚开始是自己推了几次才明白的;
  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.         }
复制代码

作者: 郑飞    时间: 2014-11-14 19:16
郑飞 发表于 2014-11-14 19:11
给你代码吧,平时敲的,你看下这个会不会好理解点,反正我刚开始是自己推了几次才明白的;
...

用了递归,尽量少变量少返回值,我为了方便打印,加了返回值,你自己改下就好;




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