javascript之快速排序

  快速排序思想其实还是挺简单的,分三步走:

  1、在数组中找到基准点,其他数与之比较。

  2、建立两个数组,小于基准点的数存储在左边数组,大于基准点的数存储在右边数组。

  3、拼接数组,然后左边数组与右边数组继续执行1、2两个步骤,直到最后完成数组排序。

  这里直接上代码: 

复制代码
function quickSort(arr){
        if(arr.length<=1){
            return arr  // 如果数组长度小于或等于1,则直接返回数组
        }
        var num = Math.floor(arr.length/2);  // 找到数组中间的索引,如果是浮点数,则向下取整
        var centerVal = arr.splice(num,1);  // 找到数组中间索引的值
        var left = [];
        var right = [];
        for(var i=0;i<arr.length;i++){
            if(arr[i]<centerVal){
                left.push(arr[i])  // 基准点左边的数放到左边数组
            }else{
                right.push(arr[i]) // 基准点右边的数放到右边数组
            }
        }
        // 利用concat拼接数组,并调用quickSort方法
        return quickSort(left).concat([centerVal],quickSort(right)) 
    }
    alert(quickSort([12,4654,389798,313,453,15,16,43]))
复制代码

  分析:实现快速排序的几个要点:

  1、找到比较的基准点;

  2、建立两个空数组,用来分别存放与基准点相比较的数。

  3、将数组中的数分别与基准点相比较,小于基准点的数存放在左边数组,否则存放在右边数组。

  4、将左边数组、基准点、右边数组拼接起来,拼接的同时,左、右两个数组分别执行前3个步骤,直到完成数组的最终排序。

posted @   江峰★  阅读(270)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
点击右上角即可分享
微信分享提示