javascript - 快速排序(lomuto 的分区)实现
问题描述
我正在尝试实现 lomuto 的分区快速排序,但我不明白为什么这不起作用。谢谢你们
const quickSort = (arr) => {
return quickSortHelper(arr, 0, arr.length-1)
}
const quickSortHelper = (arr, start, end) => {
if (start >= end) return ;
let midIdx = Math.floor(start+end/2);
[arr[start], arr[midIdx]] = [arr[midIdx], arr[start]];
let pivot = arr[start];
let smaller = start;
// let bigger = start;
for (let bigger= start+1; bigger<arr.length; bigger++) {
if (pivot > arr[bigger]) {
smaller++;
[arr[smaller], arr[bigger]] = [arr[bigger], arr[smaller]];
}
}
[arr[start], arr[smaller]] = [arr[smaller], arr[start]];
quickSortHelper(arr, start, smaller-1)
quickSortHelper(arr, smaller+1, end)
return arr;
}
console.log(quickSort([3,9,7,7,1,4,2,1,5]))
解决方案
推荐阅读
- java - OpenJDK 平台二进制文件消耗过多内存
- python - 如何在python中显示弹出消息?
- deno - Deno 权限问题 - Uncaught PermissionDenied:网络访问
- amazon-web-services - 如果我丢失了 Amazon EC2 EBS 支持的实例的 SSH 密钥怎么办?
- google-cloud-platform - 如何更新现有服务帐号的角色 - Google Cloud Console
- flutter - Flutter 在 Firestore 中存储 TextStyle
- php - 正则表达式刚刚在 Bluehost 上崩溃了
- c# - 一段时间后杀死方法的进程.net core API
- github - GitHub API 对原始 IP 地址的速率限制
- c# - C# SqlDataAdapter 从存储过程执行中读取数据缓慢