当前位置:网站首页>快排的练习
快排的练习
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
边栏推荐
猜你喜欢
MySQL index
Ogldev reading notes
ABAP 从CDS VIEW 发布OData Service示例
keytool: command not found
SAP ECC连接SAP PI系统配置
js之什么是事件?事件三要素以及操作元素
SAP 导出Excel文件打开显示:“xxx“的文件格式和扩展名不匹配。文件可能已损坏或不安全。除非您信任其来源,否则请勿打开。是否仍要打开它?
ABAP 实现发布RESTful服务供外部调用示例
SAP RFC_CVI_EI_INBOUND_MAIN BP主数据创建示例(仅演示客户)
SAP Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃。
随机推荐
keytool: command not found
redis连接出错 ERR AUTH <password> called without any password configured for the default user.
超级宝典&编程指南(红蓝宝书)-读书笔记
OpenGL超级宝典初步配置(freeglut、glew、gltools、glut)
int a = 1存放在哪
游戏辅助脚本开发之旅
BTree、B+Tree和HASH索引
MySQL storage engine
斐波拉去动态规划
手游的热更方案与动态更新策略
H5 case development
Two threads print odd and even numbers interactively
js之什么是事件?事件三要素以及操作元素
[COCI] Vještica (子集dp)
Discussion on arrow function of ES6
手游性能优化
SAP SALV14 后台输出SALV数据可直接保存文件,发送Email(带排序、超链接、筛选格式)
[self motivation series] what really hinders you?
【自我激励系列】你永远不会准备好
js中对象的三种创建方式