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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Mayer 中级黑马   /  2016-1-29 09:43  /  570 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

基本思路:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。
  1. static void quicksort(int n[], int left, int right) {
  2.         int dp;
  3.         if (left < right) {
  4.             dp = partition(n, left, right);
  5.             quicksort(n, left, dp - 1);
  6.             quicksort(n, dp + 1, right);
  7.         }
  8.     }

  9.     static int partition(int n[], int left, int right) {
  10.         int pivot = n[left];
  11.         while (left < right) {
  12.             while (left < right && n[right] >= pivot)
  13.                 right--;
  14.             if (left < right)
  15.                 n[left++] = n[right];
  16.             while (left < right && n[left] <= pivot)
  17.                 left++;
  18.             if (left < right)
  19.                 n[right--] = n[left];
  20.         }
  21.         n[left] = pivot;
  22.         return left;
  23.     }
复制代码

1 个回复

倒序浏览
没有冒泡和插入排序好理解,看的脑袋都大了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马