全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JS排序之快速排序详解

本文为大家分享了JS快速排序的具体代码,供大家参考,具体内容如下

说明

时间复杂度指的是一个算法执行所耗费的时间
空间复杂度指运行完一个程序所需内存的大小
稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面
不稳定指,如果a=b,a在b的前面,排序后可能会交换位置

--JS快速排序--

原理

从数组中选定一个基数,然后把数组中的每一项与此基数做比较,小的放入一个新数组,大的放入另外一个新数组。然后再采用这样的方法操作新数组。直到所有子集只剩下一个元素,排序完成。

时间复杂度,空间复杂度,稳定性

  • 平均时间复杂度O(nlogn)
  • 最好情况O(nlogn)
  • 最差情况O(n*n)
  • 空间复杂度O(logn)
  • 稳定性:不稳定

快速排序的写法

var examplearr=[8,94,15,88,55,76,21,39];
function fastsort(arr){
  if(arr.length<2){
    return arr;
  }
  var left=[];
  var right=[];
  var pivotIndex=Math.floor(arr.length/2);
  var pivot=arr.splice(pivotIndex,1)[0];
  for(i=0;i<arr.length;i++){
    if(arr[i]<pivot){
      left.push(arr[i]);
    }else{
      right.push(arr[i])
    }
  }
  return fastsort(left).concat([pivot],fastsort(right));
}
console.log(fastsort(examplearr));


解析

pivotIndex是将数组的长度除2向下取整得到的一个数值,数组的长度是不断减半的,所以最后它的值为0

pivot是利用splice方法从数组里获取一个基数

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# JS  # 排序  # JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】  # JS实现的冒泡排序  # 快速排序  # 插入排序算法示例  # JS排序算法之希尔排序与快速排序实现方法  # 基于JavaScript实现的快速排序算法分析  # 基于javascript实现的快速排序  # JavaScript快速排序算法不同版本原理解析  # 不稳定  # 组中  # 所需  # 与此  # 然后再  # 只剩下  # 另外一个  # 指的是  # 大家分享  # 具体内容  # 值为  # 大家多多  # 每一项  # 组里  # 作新  # splice  # push  # strong  # pivot  # ul 


相关文章: Python路径拼接规范_跨平台处理说明【指导】  成都网站制作报价公司,成都工业用气开户费用?  建站之星如何实现PC+手机+微信网站五合一建站?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  制作证书网站有哪些,全国城建培训中心证书查询官网?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  ,如何利用word制作宣传手册?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  如何高效利用200m空间完成建站?  制作网站的公司有哪些,做一个公司网站要多少钱?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  如何用搬瓦工VPS快速搭建个人网站?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  高端建站三要素:定制模板、企业官网与响应式设计优化  建站10G流量真的够用吗?如何应对访问高峰?  如何快速搭建二级域名独立网站?  如何在阿里云ECS服务器部署织梦CMS网站?  公司网站设计制作厂家,怎么创建自己的一个网站?  如何用景安虚拟主机手机版绑定域名建站?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  SQL查询语句优化的实用方法总结  焦点电影公司作品,电影焦点结局是什么?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  如何在橙子建站上传落地页?操作指南详解  黑客如何利用漏洞与弱口令入侵网站服务器?  如何在阿里云高效完成企业建站全流程?  黑客入侵网站服务器的常见手法有哪些?  网页设计与网站制作内容,怎样注册网站?  定制建站策划方案_专业建站与网站建设方案一站式指南  建站之星3.0如何解决常见操作问题?  常州自助建站费用包含哪些项目?  C#怎么使用委托和事件 C# delegate与event编程方法  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  建站主机选择指南:服务器配置与SEO优化实战技巧  高防服务器租用如何选择配置与防御等级?  宝塔面板如何快速创建新站点?  建站之星北京办公室:智能建站系统与小程序生成方案解析  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  如何在橙子建站中快速调整背景颜色?  c++怎么用jemalloc c++替换默认内存分配器【性能】  ,巨量百应是干嘛的?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  建站之星在线版空间:自助建站+智能模板一键生成方案  宁波免费建站如何选择可靠模板与平台?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何在建站之星绑定自定义域名?  宝塔建站后网页无法访问如何解决? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。