首页 > 解决方案 > 快速排序(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]))

标签: javascript

解决方案


推荐阅读