千家信息网

如何使用快速排序

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"如何使用快速排序",在日常操作中,相信很多人在如何使用快速排序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用快速排序"的疑惑有所帮助!接下来,
千家信息网最后更新 2026年11月02日如何使用快速排序

这篇文章主要介绍"如何使用快速排序",在日常操作中,相信很多人在如何使用快速排序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用快速排序"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

快速排序
快速排序是什么 快速排序是图灵奖得主C. A. R. Hoare(1934--)于1960时提出来的。

快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。整个排序过程只需要三步:

  • 在数据集之中,选择一个元素作为"基准"(pivot)。

  • 所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。

  • 对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。

引自wikipedia 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),一种排序算法,最早由东尼·霍尔提出。在平均状况下,排序n个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n)算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。

步骤
找到该数组的基准点(中间数),并创建两个空数组left和right;
遍历数组,拿出数组中的每个数和基准点进行比较,如果比基准点小就放到left数组中,如果比基准点大就放到right数组中;
对数组left和right进行递归调用。
方法一

function quickSort(arr) {       if (arr.length<=1) {return arr;}       var left = [],         right = [],         baseDot =Math.round(arr.length/2),         base =arr.splice(baseDot, 1)[0];        for (var i =0; i 

实现一个quickSort的封装,并且定义left和right,找到数组的基准点baseDot和对应的基数base,然后遍历数组的每一项和base进行对比,最后递归调用,给出一个跳出条件if (arr.length <= 1) {return arr;}

方法二

function quickSort(array, left, right) {       var length =array.length;         left =typeof left ==='number'? left :0,         right =typeof right ==='number'? right : length-1;          if (left < right) {             var index = left -1;             for (var i = left; i <= right; i++) {                 if (array[i] <= array[right]) {                     index++;                     var temp = array[index];                     array[index] = array[i];                     array[i] = temp;                 }             }             quickSort(array, left, index -1);             quickSort(array, index +1, right);         }         return array;     }

快速排序的基本思想就是分治法

引自wikipedia 在计算机科学中,分治法是建基于多项分支递归的一种很重要的算法范式。字面上的解释是"分而治之",就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。

快速排序的改进方法:三路快排
定义
三路快速排序是快速排序的的一个优化版本, 将数组分成三段, 即小于基准元素、 等于 基准元素和大于基准元素, 这样可以比较高效的处理数组中存在相同元素的情况,其它特征与快速排序基本相同。

我这里简单概括一下思路,有兴趣的同学可到上面的链接上阅读:[快速排序及优化(Java实现)][Java]

  • 随机选取基准值base(支点随机选取),参考[快速排序算法的优化思路总结][Link 1]

  • 配合着使用插入排序(当问题规模较小时,近乎有序时,插入排序表现的很好)

  • 当大量数据,且重复数多时,用三路快排

                                                   

可以看到对有重复数据的数据优化还是很可观的。

到此,关于"如何使用快速排序"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

排序 基准 数组 数据 元素 问题 算法 方法 三路 递归 学习 相同 两个 基准点 思路 更多 状况 部分 右边 子集 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 喔噻互联网科技有限公司 中关村互联网 科技集团 互联网属科技 未来的互联网科技 顺玮阁互联网科技 深圳卡尔迅互联网科技有限公司怎么样 博兴的互联网电子科技公司 互联网科技有哪些公司 互联网科技大奖都有哪些公司 乌苏新华互联网科技做什么的 浙南科技城互联网大厦建设工程 区块链结合互联网科技 华中科技大学互联网的牛人 智帮互联网科技公司最近动向 江苏互联网智能科技软件 互联网相关科技技术 昆明中奇联合互联网科技 互联网时代科技型公司的机会 张家口科技产业互联网平台 重庆科技产业互联网有哪些 上海卓越科技互联网 广州百单互联网科技有限公司 重生之互联网科技帝国 圆梦互联网科技 科技互联网公司装修 互联网下的科技发展 互联网 科技创新 银川新华互联网科技学校地址 恒银科技与互联网金融 宁夏众和广鑫互联网科技有限公司
0