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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 侯凯斌 中级黑马   /  2012-11-15 11:24  /  1306 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

快速排序的具体原理是什么,下面代码为例,请各位老师帮我解释一下,小菜鸟,脑子转不过来        ,万分感谢

private static void QuickSort(int[] array, int from, int to) {
                if (from < to) {
                        //
                    int temp = array[to];
                    int i = from - 1;
                    for (int j = from; j < to; j++) {
                        if (array[j] <= temp) {
                            i++;
                            int tempValue = array[j];
                            array[j] = array[i];
                            array[i] = tempValue;
                        }
                    }
                    array[to] = array[i+1];
                    array[i+1] = temp;

                    QuickSort(array, from, i);
                    QuickSort(array, i + 1, to);
                }
            }

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
原理我曾经在其他帖子里解释过,这里就不再重复的讲了。你可以去看下
http://bbs.itheima.com/thread-31007-1-1.html

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
关于快速排序,你可以参看我的博文,上面有详细解释。地址:http://blog.sina.com.cn/s/blog_ba289cbf0101cytr.html
回复 使用道具 举报
  1. public static void quickSort(int[] a) {
  2.            quickSort(a, 0, a.length - 1);
  3. }

  4. private static void quickSort(int[] a, int start, int end) {
  5.             int left = start;
  6.             int right = end - 1;
  7.             int pivot = a[end];

  8.             while (left < right) {
  9.                     if (a[left] <= pivot) {
  10.                            left++;
  11.                            continue;
  12.                      }
  13.                     if (a[right] > pivot) {
  14.                            right--;
  15.                            continue;
  16.                      }
  17.                     swap(a, left++, right);
  18.              }
  19. // 左向右方向没有找到,就已经与右向左重合了。
  20.                    if (a[left] < pivot) {
  21.                    left++;
  22.                    }
  23.                    swap(a, left, end);

  24.                    if(left - 1 > start) {
  25.                    quickSort(a, start, left - 1);
  26.                    }
  27.                    if(left + 1 < end) {
  28.                    quickSort(a, left + 1, end);
  29.                     }
  30.     }
复制代码

464574757.jpg (149.63 KB, 下载次数: 13)

464574757.jpg

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
非常感谢给我老师,受教了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马