js中的快速排序

欢迎访问我的个人博客 http://xiaolongwu.cn/

快速排序代码

        function quickSort(arr){
            //判断如果数组长度为一,则直接返回
            if(arr.length <= 1){
                return arr;
            }

            //找出一个标识位,一般为最中间的数
            var tag = Math.floor(arr.length/2);//向下取整,

            //截取标识位的数组,这里splice(index,howmany,addNewItem)可以改变原数组的长度,
            //而同样可以截取的slice(starIndex,endIndex)方法不能改变原数组的长度;            
            var middle = arr.splice(tag,1)[0];

            //申明两个空数组
            var left = [],right = [];
            for(i = 0; i < arr.length; i ++){

                //比标识位小的放到左边,大的放到右边
                if(arr[i] < middle){
                    left.push(arr[i]);
                }else{
                    right.push(arr[i]);
                }

            //利用递归,不停的自调用此方法,直到每个数组长度都为1时return;

            return quickSort(left).concat([middle],quickSort(right));
        }
arr1 = [15,12,18,20,2,15,34,100,7];
        var aa = quickSort(arr1);
        console.log(aa); //[2, 7, 12, 15, 15, 18, 20, 34, 100]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值