快速排序

基本过程

1. 选取数组中的一个元素作为基准(pivot)

2. 按照基准将数组分区,左区全部小于基准,右区全部大于基准,使用方法为原地置换(swap in place)

3. 对左右分区递归使用1和2步,直至左右分区只有一个或零个元素,排序完成

JavaScript实现

复制代码
function fQuickSort(arr,low,high) {
    if(low > high){
        return;
    }
    if(low < 0){
        throw new Error('low should be great than zero')
    }
    if(high >= arr.length){
        throw new Error('high should be less than array\'s length')
    }
    var pivotIndex = fSwapInPlace(arr,low,high);
    fQuickSort(arr,low,pivotIndex-1);
    fQuickSort(arr,pivotIndex+1,high);
}

function fSwapInPlace(arr,low,high){
    var pivot = arr[low];
    while (low < high) {
        while(low < high && arr[high] > pivot){
            high--;
        }
        arr[low] = arr[high];
        while(low < high && arr[low] <= pivot){
            low++;
        }
        arr[high] = arr[low];
    }
    arr[low] = pivot;
  //stop at pivot place,low equals pivot index
    return low;
}
复制代码

 JavaScript数组方式实现

复制代码
function quickSort(arr){
    if(arr.length <= 1) return arr;
    var index = Math.floor(arr.length/2);
    var key = arr.splice(index,1)[0];
    var left = [],right = [];
    arr.forEach(function(v){
        v <= key ? left.push(v) : right.push(v);
    });
    return quickSort(left).concat([key],quickSort(right));
}
复制代码

 

posted @   全玉  阅读(223)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示