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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 骑上最爱 中级黑马   /  2013-5-22 13:29  /  789 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1.         public static void quickSork(int[] arr, int left, int right) {
  2.                 //定义一个记录数组中间索引的变量
  3.                 int middle = (left+right)/2;
  4.                 //定义一个变量用来交换两个值
  5.                 int jh;
  6.                 //用于记录数组左边的索引
  7.                 int l = left;
  8.                 //用于记录数组右边的索引
  9.                 int r = right;
  10.                 do {
  11.                         //如果下标为l的值小于中间值并且没有超过最大索引值则自增
  12.                         while (arr[l]<arr[middle] && l<right) {
  13.                                 l++;
  14.                         }
  15.                         //如果下标为r的值大于中间值并且没有低于最小索引值则自减
  16.                         while (arr[r]>arr[middle] && r>left ) {
  17.                                 r--;
  18.                         }
  19.                         //如果r这个索引大于或等于l这个索引,说明r索引的值大于l索引
  20.                         //的值,所以要交换位置,保证排序正常。
  21.                         if (l <= r) {
  22.                                 jh = arr[r];
  23.                                 arr[r] = arr[l];
  24.                                 arr[l] = jh;
  25.                                 l ++;
  26.                                 r --;
  27.                         }
  28.                 } while (l <= r);//如果r这个索引大于或等于l这个索引,说明本次排序结束
  29.                 //如果r的索引大于起始索引,说明还没有排序完,因为排序方式
  30.                 //相同则使用递归。
  31.                 if (left < r) {
  32.                         quickSork(arr, left, r);
  33.                 }
  34.                 //如果l的索引小于结束索引,说明还没有排序完,因为排序方式
  35.                 //相同则使用递归。
  36.                 if (right > l) {
  37.                         quickSork(arr, l, right);
  38.                 }

  39.         }
复制代码

评分

参与人数 1黑马币 +2 收起 理由
Sword + 2

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马