一、快速排序法概念

我们将一个杂乱无章的数组进行一个快速排序,可以先从一个数组中取一个中间值,将一个数组一分为2,左边的数组跟中间值进行比较,小的放在左边,大的放在右边。比较完毕后再次取中间值,再次比较一次类推
二、思路
1、取的中间值,以及中间值的下标
2、创建一个left空数组,存放小于中间值的数据
3、创建一个right空数组,存放大于中间值的数据
4、递归的终止条件,如果数组的长度等于1的时候就返回数组
5、循环将数组一分为二
6、递归
三、代码
function quicksort(arr){if(arr.length<2){return arr;}var midIndex = arr.length%2 == 0? arr.length/2 : (arr.length+1)/2;var mid = arr[midIndex];var left  = [];var right = [];for(var i=0;i<arr.length;i++){if(i != midIndex && arr[i] <= mid){left.push(arr[i]);}if(i != midIndex && arr[i] > mid){right.push(arr[i])}}return quicksort(left).concat(mid).concat(quicksort(right))
}

转载于:https://www.cnblogs.com/nanianqiming/p/9541638.html

【JavaScript算法】---快速排序法相关推荐

  1. java 数据结构与算法 ——快速排序法

    快速排序法: 顾名思议,快速排序法是实践中的一种快速的排序算法,在c++或对java基本类型的排序中特别有用.它的平均运行时间是0(N log N).该算法之所以特别快,主要是由于非常精练和高度优化的 ...

  2. JavaScript算法——快速排序

    一.概念 快速排序算法由 C. A. R. Hoare 在 1960 年提出.它的时间复杂度也是 O(nlogn),但它在时间复杂度为 O(nlogn) 级的几种排序算法中,大多数情况下效率更高,所以 ...

  3. 算法之旅 | 快速排序法

    HTML5学堂-码匠:前几期"算法之旅"跟大家分享了冒泡排序法和选择排序法,它们都属于时间复杂度为O(n^2)的"慢"排序.今天跟大家分享多种排序算法里使用较广 ...

  4. php四种基础算法:冒泡,选择,插入和快速排序法

    许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣.作为一个初级phper,虽然很少接触到算法方面的东西 .但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算法,我想还是要 ...

  5. oracle快速排序法,经典算法系列之快速排序算法

    快速排序(Quicksort)是对冒泡排序的一种改进.由C. A. R. Hoare在1962年提出.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但 ...

  6. 【重温基础算法】内部排序之快速排序法

    内部排序之快速排序法 文章目录 内部排序之快速排序法 主要思想 过程演示 JAVA代码 算法分析 时间复杂度分析 最好时间复杂度 最坏时间复杂度 平均时间复杂度 空间复杂度 对冒泡排序的一种优化 主要 ...

  7. PHP冒泡排序算法和快速排序法

    算法说明: 冒泡排序大概的意思是依次比较相邻的两个数,然后根据大小做出排序,直至最后两位数.由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序.但其实在实际过程中也可以根据 ...

  8. JavaScript的排序算法——快速排序

    排序算法(Sorting algorithm)是计算机科学最古老.最基本的课题之一.要想成为合格的程序员,就必须理解和掌握各种排序算法. 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排 ...

  9. 经典算法之快速排序法(附B站最细讲解视频)

    活动地址:21天学习挑战赛 文章目录 一.算法 1.算法概述 2.算法步骤 3.算法特点 二.算法实践 1.Java代码 2.执行结果 3.讲解视频 三.复杂度分析 1.时间复杂度 2.空间复杂度 一 ...

最新文章

  1. R语言使用ggpubr包的ggarrange函数组合多张结论图:使用ggpubr包将多个可视化结论嵌套起来输出(ggarrange组合ggarrange组合后的图像)
  2. 阿里巴巴达摩院ICLR 2020论文:从群体动态中认知个体
  3. ie6/IE8/IE9/谷歌以及火狐等浏览器下li 高度一致解决办法
  4. Delphi程序自删除
  5. web前端【补充】CSS补充
  6. 八、图形与图像处理(2)
  7. Vue的使用技巧是什么,学习难度怎么样?
  8. ChaiNext:ETH底部试探后反弹,测试1500关口
  9. 设计模式大类--结构模式(下)
  10. 搜索。深搜学习。深度优先搜索之数字全排列。nyoj,组合数
  11. 8uftp怎么上传文件,8uftp怎么上传文件
  12. KVM/QEMU(virt-manager)使用iso镜像安装macOS bigsur 11.4
  13. 考研复试数据库原理课后习题(七)——数据库设计
  14. 云片网实现短信验证码
  15. [2017湖南集训7-8]暗牧 虚树+最短路
  16. apple tv 开发_如何在Apple TV上管理您的订阅
  17. 用Python分析《令人心动的offer2》的13万条弹幕,网友们都在吐槽什么?
  18. Photo Ninja for Mac(RAW图片转换器)
  19. 安装配置MacTex
  20. 简单记录下手机root 过程

热门文章

  1. Python的优缺点介绍
  2. CVPR2021论文集锦 | CVPR2021最新论文 | CVPR2021审稿结果 | CVPR2021录取结果
  3. 资源下载| 深度学习Pytoch1.0如何玩?这一门含900页ppt和代码实例的深度学习课程带你飞
  4. python获得字符出现频率,并用字典保存;获得字典最大value对应的key值
  5. Hybrid A*论文解析(4)
  6. LQR 离散与连续问题
  7. vue 后台数据列表获取图片_vue使用ajax获取后台数据进行显示的示例
  8. 如何打造园本特色_如何打造一个可持续发展的特色观光园?
  9. webassembly类型_WebAssembly 现状与实战
  10. mysql客户端centos离线安装_mysql离线安装部署centos