前端排序算法实现——JS快速排序

其实快速排序很简单,只是对冒泡排序的一种改进。

快速排序的步骤:

1、找到数组的中间项,并把它移除
2、准备左右两个新数组,循环数组剩下的每一项,比中间数小的,放左边的数组中,比中间数大的放右边的数组中
3、以递归的方式将左右两边的数组持续这样处理,一直到左右两个数组都排好序为止,然后拼接(concat)

简单画了张图可能会更好理解一些:
在这里插入图片描述
话不多说,放代码:

		//创建一个快速排序的数组
        function quick(ary){
            //4、结束递归,如果当前数组的长度小于等于1,则返回这个数组
            if(ary.length<=0){
                return ary
            }
            //1、找到数组的中间项,并把它移出
            let middleIndex=Math.floor(ary.length/2)
            let middleValue=ary.splice(middleIndex,1)[0]

            //2、准备左右俩个个数组,循环剩下数组的每一项,比当前项小的放左边,反之放右边
            let aryLeft=[]
            let aryRight=[]
            
            for(let i=0;i<ary.length;i++){
                let item=ary[i]
                if(item<middleValue){
                    aryLeft.push(item)
                }else{
                    aryRight.push(item)
                }
            }

            //3、递归方式上左右两边的数组持续这样处理,一直到左右两个数组排好序为止,然后拼接
            return quick(aryLeft).concat(middleValue,quick(aryRight))   
        }
        //创建一个数组
        let arr=[12,8,15,16,24]
        //调用快速排序的函数并赋值给arr2
        let arr2=quick(arr)
        //输出arr2
        console.log(arr2)

此时,页面上显示的就是已经排好序的数组啦
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值