js中的快速排序

JavaScript实现快速排序算法 JavaScript实现经典排序算法—快排 快速排序算法的性能比之前的冒泡、选择排序都要好,和归并排序一样,是一个可以用于实战的算法,听说chrome用的就是快排 又听说前端面试会考,那你实现一个快排吧! 一、快速排序的算法思路 还是在这里看一下快排是啥意思 快速排序算法动图 1、快速排序的特点就是随机设置一个基准点,比如是数组的第一个元素,然后数组的其他元素就跟这个基准线进行对比,比基准线大的放在左边,比基准线小的放在右边 2、再设置一个基准线,再这样小的放左边,大的放右边,递归。 二、编码实现 详细分析 阅读详情

一、快速排序(例子)

1 找一个基准点,
2 建立两个数组,分别存储左边和右边的数组,
3 利用递归进行下次比较。

例如:[12,5,37,6,22,40]

例子的步骤:

第一个排:

在这6个数中,找一个基准点,就是中间一个数,如这里就是6除以2等于三,就是找第三个数,这里是37;
找到37之后,将剩下的数[12,5,6,22,40] 。分别跟37进行比较,如果比37大的,就放在右边,比37小的,就放在左边,经过第一次比较之后的结果如下:
[12,5,6,22,37,40]

第二次排:

然后将37左右边分成两个数组,[12,5,6,22] 和 [40],对这两个数组进行同样的操作;
第一个数组[12,5,6,22]的基准点为5,比较之后就是[5,12,6,22]
由于第二个数组剩下一个数,就是自己[40]

经过第二次比较之后的结果为 [5,12,6,22,37,40]

第三次排:

然后再一次比较,将剩下的 [12,6,22] 进行再次拆分,以6为基准点,得到结果 [6,12,22]

最后的结果就为 [5,6,12,22,37,40]

二、代码如下:

function quickSort(arr){
    if(arr.length<=1){
        return arr;
    }
    var num = Math.floor(arr.length/2);//找到基准点索引
    var numValue = arr.splice(num,1); //将这个基准点从数组中截取出来
    var left = [];
    var right = [];
    for (var i = 0; i < arr.length; i++) {
        if(arr[i]<numValue){
            left.push(arr[i]);
        }else{
            right.push(arr[i]);
        }
    }
    return quickSort(left).concat([numValue],quickSort(right));
}
alert(quickSort([12,5,37,6,22,40]));  
从宁德新能源面试官视角,拆解Halcon/OpenCV图像处理工程师的硬核技能树(附避坑指南) 本文从宁德新能源面试官视角出发,详细拆解Halcon/OpenCV图像处理工程师的核心技能树,涵盖硬件选型、算法实现和系统工程思维三大能力维度。文章提供工业视觉工程师面试的实战避坑指南,包括硬件配置要点、算法优化技巧及职业发展路径,助力求职者系统提升图像处理专业技能。 阅读详情

相关推荐

通讯软件013——分分钟学会Kepware OPC AE Server仿真配置

本文介绍如何使用Kepware软件仿真OPC AE Server配置。

zhouwl72的博客 2227

JS之快速排序

    对于初学代码的同学们来说,它可谓是初学代码者的一个噩梦,相当晦涩难懂。笔者在初学代码阶段也是被它深深的教育了,不过现在它成为了我随手写代码时候最喜欢的一个选择。回过头来,对他的理解也逐渐加深。 快速排序核心就在递归,而递归的核心就在一递一归。 递:重复对自身进行调用 归:找到出口,进行return function quickSort(arr){ if(arr.length <=1){//递归的出口,如果递归到数组为一个或者零个元素,

Coding_Man_的博客 626

芯片设计-信号完整性 SI 解析:Unit Interval 与比特周期的关系及其在高速信号中的应用

本文深入解析了芯片设计中信号完整性(SI)的核心概念Unit Interval(UI)与比特周期的关系及其在高速信号中的应用。通过实际案例和计算公式,详细阐述了UI在不同数据速率下的变化、在眼图分析中的关键作用,以及如何应对高速信号设计中的抖动和码间干扰等挑战。文章还提供了PCB布线和芯片设计中的UI优化技巧,帮助工程师提升高速信号设计的实战能力。

weixin_28683391的博客 468

Js中快速排序

快速排序主要分三部分:1、选出一个基准(pivot) 2、所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;3、递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序;递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽...

qq_39412787的博客 213

FPGA实战:手把手教你用Verilog实现Modbus CRC16校验(附完整代码)

本文详细介绍了在FPGA中实现Modbus RTU协议CRC16校验模块的完整实战方案。针对硬件设计中的时序、资源与性能挑战,文章从算法原理出发,提供了清晰的Verilog模块接口、状态机设计、查表ROM实现及优化策略,并附带了完整的可综合代码与测试平台,帮助工程师高效构建稳定可靠的工业通信系统。

weixin_29164185的博客 432

速腾RS-LiDAR-16激光雷达ROS环境搭建与点云可视化实战指南

本文提供速腾RS-LiDAR-16激光雷达在ROS环境下的完整搭建与可视化实战指南。从硬件连接、网络配置、驱动安装编译,到核心参数详解与Rviz点云可视化,手把手解决IP设置、坐标系对齐等常见问题,帮助开发者快速实现激光雷达三维点云数据的采集与显示。

weixin_29271263的博客 369

js数组按中文拼音排序_通俗易懂讲算法:快速排序

作者:Marcus Sanatan翻译:老齐介绍快速排序是一种流行的排序算法,经常与归并排序一起使用。快速排序是一个高效的排序算法,平均复杂度为O(nlogn)。它受欢迎的部分原因还在于易于实施。在本文中,我们将先使用整数集合演示快速排序算法,然后会用自定义对象深入探讨这种算法的实现方式。在分治法、原地排序和非稳定排序中,都有快速排序算法。在分治法中,对大数组使用递归进行排序之前,使用快...

weixin_39785723的博客 275

QT实现Word读写

在windows环境下,我们可以通过ActiveQt实现Office自动化,相当于VB的VBA功能。 以下是一个实例: #include #include #include int main(int argc, char *argv[]) {     QApplication a(argc, argv);     //显示的打开一个word应用程序     QAxW

nameofhsw的专栏 1万+

js数组快速排序

快速排序就是找基准,小的放左边,大的放右边,并把左右递归 var arr = [1,8,2,5,14,2,4,8,10,32,45,3]; console.log(sort(arr, "min")) console.log(sort(arr, "max")) function sort(arr, type) { var arr_len = arr.length; var

pengyaoli的博客 1339

【PLL】分频器设计权衡:从CMOS到CML的电路实现与优化

本文深入探讨了PLL中分频器的设计权衡,比较了CMOS和CML两种电路实现的优缺点。通过实际案例分析,展示了如何在速度、功耗和噪声之间取得平衡,特别是在5G射频芯片和Wi-Fi 6E等高频应用中的优化实践。文章还提供了混合架构设计和电源噪声协同优化的实用技巧,适合电路设计工程师参考。

weixin_42521843的博客 442

18、改进的LSTM用于污染物浓度预测

本文探讨了改进的长短期记忆网络(MLSTM)在空气污染预测中的应用,重点分析了其对印度泰米尔纳德邦五个城市(金奈、塞勒姆、哥印拜陀、马杜赖和图蒂科林)的PM2.5、PM10、SO2和NO2四种污染物浓度的预测效果。通过与传统LSTM模型的对比实验,结果显示MLSTM在预测准确性和执行效率方面均优于LSTM。研究结果表明,MLSTM在空气质量预测领域具有较高的应用潜力,可为环境保护和空气质量管理提供有力支持。

j0k1l2m3n的博客 175

js 快速排序

最近看到一个排序,所以自己也看了一下,这里分享一下。 首先创建一个数组 // 创建一个数组 const arr = []; function random(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } ...

我不是一个假前端的博客 2604

C# 实现 Modbus 通信全教程(支持 TCP 和 RTU,含完整错误处理)

环境准备:安装 NModbus4 库,明确设备参数(IP/串口、地址、数据类型);连接设备:TCP 用 TcpClient,RTU 用 SerialPort,注意超时和参数匹配;读写数据:根据数据类型调用对应方法(读保持寄存器用 ReadHoldingRegisters);错误处理:捕获连接、超时、协议等异常,针对性排查问题。掌握这些后,即可轻松实现与工业设备的 Modbus 通信,为上位机开发提供稳定的数据交互能力。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2067

JS实现快速排序

js实现快速排序

xinxxxxxxxxx的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

js快排(JavaScript快速排序算法)- 前端面试

快速排序算法通过多次比较和交换来实现排序,其排序流程如下:(1) 首先设定一个分界值,通过该分界值将数组分成左右两部分。(2) 将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都 小于分界值,而右边部分中各元素都大于或等于分界值。(3) 然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。(4) 重复上述过程,可以看出,这是一个递归定义。通

shao402248950的博客 663

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

js实现快速排序

function quickSort(arr){ //如果数组<=1,则直接返回 if(arr.length<=1){return arr;} var pivotIndex=Math.floor(arr.length/2); //找基准,并把基准从原数组删除 va...

weixin_30491641的博客 195

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

JavaScript算法——快速排序

一、概念 快速排序算法由 C. A. R. Hoare 在 1960 年提出。它的时间复杂度也是 O(nlogn),但它在时间复杂度为 O(nlogn) 级的几种排序算法中,大多数情况下效率更高,所以快速排序的应用非常广泛。 注意: 快速排序不一定是最快的排序方法,这取决于需要排序的数据结构、数据量。不过,大多数情况下,面试官和工作场所用它的概率也是相对较高的,所以我们应该花时间把它学透彻。 二、工作原理 首先设定一个分界值,通过该分界值将数组分成左右两部分。 将大于或等于分界值的数据集中到数组右边

诸葛韩信--一个前往前端不归路的浪子 6948

JS 快速排序

快速排序是一种分置策略的排序算法,运行高效,应用广泛,其核心操作是“哨兵划分”:选择数组中某个元素作为“基准数”,将所有小于基准数的元素放在其左边,大于基准数的元素放在其右边,从而将数组划分成左子数组和右子数组,再分别递归左子数组和右子数组。因为是降序,要保证大的元素交换后在左边,所以依然先移动右指针。先移动左指针,找到第一个比基准数大的元素9, 之后开始移动右指针,当左右指针重合时,右指针没有找到比基准数小的元素,此时交换左指针与基准数的位置,会发现,左子数组中的元素,并不是全都比基准数小。

chris_tangtang的博客 2280

快速排序之JS实现

关于快速排序的讲解在本人博文快速排序详解中,本门只展示JS的代码实现: const quickSort = (array) => { const sort = (arr, left = 0, right = arr.length - 1) => { if (left >= right) {//如果左边的索引大于等于右边的索引说明整理完毕 return } let i = left let j = right const baseVal = arr[j] // 取无

艺术编程 2220

js算法-快速排序

快速排序 <script> function random(min,max){ return ~~(random()*(max-min)+min ); } function randomArray(len,min,max){ var arr=[]; for(var i=0; i<len; i++){ arr[i]=random(min,max); } return arr; } /** * 对指定的数组进行快速排序。 * @param ar

Yanxiaona111的博客 302

javascript实现快速排序

快速排序: 快速排序是对冒泡排序的一种改进,他是将数组的所有的值与一个key值比较(此值一般为第一个或者最后一个)然后将大于key值的数放在key值又边,小于key值的数放在key值左边。然后分别在对key值左右的无序数组进行上述方法进行递归排序最后当数组排序完成结束排序。 下面是我编写的js代码: function quickSort(arr,left,right) { ...

你若成风,我则化雨 462

js实现快速排序的两种方法,附讲解

本文提供两种JavaScript实现快排方式, 第一种为阮一峰老师所写 原文地址:http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html 第二种为个人看到讲解比较不错的C++实现(已修改为JavaScript实现) 原文地址:http://blog.youkuaiyun.com/morewindows/article/details/6684558 ​ "快速排序"的思想很简单,整个排序过程只需要三步: ​ (1)在数据集之

weixin_43823444的博客 2833

关于js快速排序的总结

快速排序的思想是:随机选取一个中间值,遍历数组,将数组中比这个数小的放在这个数左边,将数组中比这个数大的放在右边,直至该数组排序完成。 关于js的快速排序思路主要有两种: 第一种:递归思想,使用两个数组对左右两边的小数和大数分别进行储存,但是该方法比较浪费内存资源 代码如下: let qSort = (arr) => { let quickSort = (arr) => ...

qq_41398471的博客 156
上一篇: JS中的事件委托
下一篇: js中对象的拷贝(复制)
hp柠檬茶
博客等级 码龄11年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值