JS排序之快速排序详解

发布时间 - 2026-01-11 00:34:07    点击率:

本文为大家分享了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 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  教你用AI将一段旋律扩展成一首完整的曲子  如何挑选优质建站一级代理提升网站排名?  WEB开发之注册页面验证码倒计时代码的实现  如何快速搭建自助建站会员专属系统?  jquery插件bootstrapValidator表单验证详解  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  北京网站制作公司哪家好一点,北京租房网站有哪些?  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  PHP 500报错的快速解决方法  Laravel如何实现用户注册和登录?(Auth脚手架指南)  做企业网站制作流程,企业网站制作基本流程有哪些?  如何快速生成专业多端适配建站电话?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  如何确认建站备案号应放置的具体位置?  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  ,在苏州找工作,上哪个网站比较好?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  简历在线制作网站免费版,如何创建个人简历?  深圳网站制作的公司有哪些,dido官方网站?  Linux系统命令中tree命令详解  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  QQ浏览器网页版登录入口 个人中心在线进入  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  深圳网站制作平台,深圳市做网站好的公司有哪些?  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  如何在建站之星网店版论坛获取技术支持?  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel如何自定义分页视图?(Pagination示例)  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  如何用5美元大硬盘VPS安全高效搭建个人网站?  免费网站制作appp,免费制作app哪个平台好?  如何在阿里云完成域名注册与建站?  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  如何快速搭建二级域名独立网站?  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  googleplay官方入口在哪里_Google Play官方商店快速入口指南  如何快速生成可下载的建站源码工具?  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  文字头像制作网站推荐软件,醒图能自动配文字吗?  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程