最近编写了快速冒泡排序代码,帮忙看看有没有什么破绽?

//快速冒泡排序
function quickBubbleSort(arrDt,cmp){
  for(var i=1;i<arrDt.length;i++){
    quickBubbleSortAction(arrDt,cmp,i);
  }
  return arrDt;   
}
function quickBubbleSortAction(arrDt,cmp,length){
  var nxtDt=arrDt[length];
  //检查头
  var def=cmp.compere(arrDt[0],nxtDt);
  if(def>=0){ //插入首位
    quickBubbleSort_insert(arrDt,length,0,nxtDt);
    return;
  }
  if(length==1){
    //第一和第二个比较
    return;
  }
  //检查尾
  var end=length-1;
  def=cmp.compere(arrDt[end],nxtDt);
  if(def<=0)return;  //比最后1个大
  
  var start=0;
  var mid;
  while(start<end-1){
    mid=(start+end)/2;
    def=cmp.compere(arrDt[mid],nxtDt);
    if(def==0){
      end=mid;
      break; //插入相等的下一位
    }
    if(def<0){
      start=mid;
    }else{
      end=mid;
    }
  }

  quickBubbleSort_insert(arrDt,length,end,nxtDt);
   
}
function quickBubbleSort_insert(arrDt,length,pos,nxtDt){
  //移位  北漂族:www.360lifer.com
  for(var i=length;i>pos;i--){
    arrDt[i]=arrDt[i-1];
  }
  arrDt[pos]=nxtDt;
}

//数值字段比较对象
function QBSNumComperer(cpFldNm,isDesc){
  this.cpFldNm=cpFldNm;
  if(isDesc){
    this.isDesc=true;
  }else{
    this.isDesc=false;
  }
  this.compere=function(it1,it2){
    if(this.isDesc){
      return it2[this.cpFldNm]-it1[this.cpFldNm];
    }else{
      return it1[this.cpFldNm]-it2[this.cpFldNm];
    }
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值