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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 束玉杰 中级黑马   /  2019-12-26 17:17  /  1271 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

快速排序算法是冒泡排序的一种改进,快速排序也是通过逐渐消除待排序的无序序列中的逆序元素来实现排序的
它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
简单地说就是这三步:
1、先从数列中取出一个数作为基准数
2、分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边
3、再对左右区间重复第二步,直到各区间只有一个数

我们可以从下图更直观地理解快速排序的基本思想和步骤



下面是一段快速排序的代码:
[JavaScript] 纯文本查看 复制代码
function quickSort(arr) {

      if (arr.length <= 1) {
        return arr;
      }
      let leftArr = [];
      let rightArr = [];
      let q = arr[0];
      for (let i = 1, l = arr.length; i < l; i++) {
        if (arr[i] > q) {
          rightArr.push(arr[i]);
        } else {
          leftArr.push(arr[i]);
        }
      }
      return [].concat(quickSort(leftArr), [q], quickSort(rightArr));
    }
    var testArr = [111, 23, 11, 3334, 88567, 88456, 1232131, 11232, 666, 3871, 7167, 68177, 678167, 618717]
    console.log(quickSort(testArr))


快速排序示意图.gif (90.84 KB, 下载次数: 24)

快速排序示意图.gif

0 个回复

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