当前位置:网站首页>快排的练习
快排的练习
2022-04-23 06:26:00 【笔描相思】
function sort(array) {
if (!checkArray(array)) return
quickSort(array, 0, array.length - 1);
return array;
}
function quickSort(array, left, right) {
if (left < right) {
swap(array, , right)
// 随机取值,然后和末尾交换,这样做比固定取一个位置的复杂度略低
let indexs = part(array, parseInt(Math.random() * (right - left + 1)) + left, right);
quickSort(array, left, indexs[0]);
quickSort(array, indexs[1] + 1, right);
}
}
function part(array, left, right) {
let less = left - 1;
let more = right;
while (left < more) {
if (array[left] < array[right]) {
// 当前值比基准值小,`less` 和 `left` 都加一
++less;
++left;
} else if (array[left] > array[right]) {
// 当前值比基准值大,将当前值和右边的值交换
// 并且不改变 `left`,因为当前换过来的值还没有判断过大小
swap(array, --more, left);
} else {
// 和基准值相同,只移动下标
left++;
}
}
// 将基准值和比基准值大的第一个值交换位置
// 这样数组就变成 `[比基准值小, 基准值, 比基准值大]`
swap(array, right, more);
return [less, more];
}
版权声明
本文为[笔描相思]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_44788119/article/details/120902840
边栏推荐
猜你喜欢

js之预解析

SAP PI/PO rfc2RESTful 發布rfc接口為RESTful示例(Proxy間接法)

简易随机点名抽奖(js下编写)

ABAP 实现发布RESTful服务供外部调用示例

Background management system framework, there is always what you want

js之排他思想及案例

Nacos/sentinel网关限流和分组 (代码)

超级宝典&编程指南(红蓝宝书)-读书笔记

Reflection on the systematic design of Android audio and video caching mechanism

对js中argumens的简单理解
随机推荐
【自我激励系列】你永远不会准备好
Nacos / sentinel gateway current limiting and grouping (code)
H5 case development
SAP SALV14 后台输出SALV数据可直接保存文件,发送Email(带排序、超链接、筛选格式)
1D/1D动态规划学习总结
二叉树的深度
图论入门——建图
npm 安装踩坑
2. Restricted query
如何SQL 语句UNION实现当一个表中的一列内容为空时则取另一个表的另一列
页面动态显示时间(升级版)
[CF 1425D]Danger of Mad Snakes(组合计数+容斥)
简单理解==和equals,String为什么可以不用new
配置npm
[CodeForces - 208E] Blood Cousins(k代兄弟问题)
11.表和库的管理
CSDN很火的汤小洋老师全部课程总共有哪些(问号问号问号)
ogldev-读书笔记
SAP PI/PO rfc2Soap 发布rfc接口为ws示例
SAP DEBUG调试FOR IN、REDUCE等复杂的语句