插入排序和快速排序

  1. 插入排序
    时间复杂度为O(n^2)
 <script>
        Array.prototype.insert=function insert(){
            let _this=this,
             handle=[];
            handle.push(_this[0]);
            for(let i=1;i<_this.length;i++){
                let A=_this[i];
                for(let j=handle.length-1;j>=0;j--){
                    let B=handle[j];
                    if(A>B){
                        handle.splice(j+1,0,A);
                        break;
                    }
                    if(j==0){
                        handle.unshift(A);
                    }
                }       
            }
            return handle;
        }
        let arr=[12,8,24,16,1];
        arr=arr.insert();
        console.log(arr);
    </script>
  1. 快速排序(二分法)
    时间复杂度为O(log2(n))
<script>
        Array.prototype.quick=function quick(){
            let _this=this;
            //如果处理的数组只有一项或者为空则无需在处理
            if(_this.length<=1){
                return _this;
            }          
            let middleIndex=Math.floor(_this.length/2),
                middleValue=_this.splice(middleIndex,1)[0];
            let arrLeft=[],
                arrRight=[];
            for(let i=0;i<_this.length;i++){
                let item=_this[i];
                item<middleValue?arrLeft.push(item):arrRight.push(item);
                }
           return quick.call(arrLeft).concat(middleValue,quick.call(arrRight));
        }
        let arr=[12,8,24,16,1];
        arr=arr.quick();
        console.log(arr);
    </script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值