黑马程序员技术交流社区

标题: [上海校区]浅谈快速排序 [打印本页]

作者: 束玉杰    时间: 2019-12-26 17:17
标题: [上海校区]浅谈快速排序
快速排序算法是冒泡排序的一种改进,快速排序也是通过逐渐消除待排序的无序序列中的逆序元素来实现排序的
它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
简单地说就是这三步:
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 > q) {
          rightArr.push(arr);
        } else {
          leftArr.push(arr);
        }
      }
      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, 下载次数: 54)

快速排序示意图.gif





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2