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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2014-1-14 22:11  /  1781 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /// <summary>
  2.         /// 升序快速排序
  3.         /// </summary>
  4.         /// <param name="ia"></param>ia 是要进行排序的数组,
  5.         /// <param name="low"></param>
  6.         /// <param name="high"></param>low和high分别记录数组中需要排序的的区间的下限索引和上限索引
  7.         static void QuickSort(int[] ia, int low, int high)
  8.         {
  9.             int l = low, h = high; //将l,h记录low 和 high 后续中将会用到l 和 h游标
  10.             int pos = l;    //pos 用来记录需要进行定位的元素的索引,初始化为l,即从最低索引开始定位;
  11.             int temp = ia[l]; //temp用来记录定位元素的值,初始化为ia[l];
  12.             while (l != h) // 当l和h不相等时,意味着元素可能还没有定位成功
  13.             {

  14.                 while (h > l)//先在上游元素中进行定位,如果发现上游有比要定位元素值小的,进行换位。
  15.                 {
  16.                     if (temp > ia[h])
  17.                     {
  18.                         ia[l] = ia[h];
  19.                         pos = h;
  20.                         l++;
  21.                         break;
  22.                     }
  23.                     h--;
  24.                 }
  25.                 while (l < h)//然后在下游元素中进行定位,如果发现下游中有比要定位元素大的,进行换位.
  26.                 {
  27.                     if (temp < ia[l])
  28.                     {
  29.                         ia[h] = ia[l];
  30.                         h--;
  31.                         pos = l;
  32.                         break;
  33.                     }
  34.                     l++;
  35.                 }

  36.                 if (l == h) //如果l和h相等,意味着定位元素已经成功定位。
  37.                 {
  38.                     ia[pos] = temp;
  39.                 }

  40.             }

  41.             if ((pos - 1) > low)//对定位的位置左边的区间进行递归
  42.             {
  43.                 QuickSort(ia, low, pos - 1);
  44.             }

  45.             if (pos + 1 < high)//对定位的位置右边的区间进行递归
  46.             {
  47.                 QuickSort(ia, pos + 1, high);
  48.             }
  49.             
  50.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1

查看全部评分

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