数组原形添加几个排序方法,缩进了下,方便大家看

<script>
var arr=[10,9,8,7,6,5,4,3,2,1,34,234,12,4,12,312];


//快速排序
Array.prototype.qSort=function(){
  if(this.length<=0){
    return [];
  }
  var cIndex=Math.floor(this.length/2);
  var c=this.splice(cIndex,1);
  var left=[];
  var right=[];
  for(var i=0;i<this.length;i++){
    if(this[i]<c[0]){
      left.push(this[i]);
    }else{
      right.push(this[i]);
    }
  }
  return left.qSort().concat(c,right.qSort());
};

//冒泡排序
Array.prototype.bSort=function(){
  for(var i=0;i<this.length;i++){
    for(j=0;j<this.length;j++){
      if(this[j+1]<this[j]){
        var car;
        car=this[j];
        this[j]=this[j+1];
        this[j+1]=car;
      }
    }
  }
  return this;
};

//选择排序
Array.prototype.sSort=function(){
  for(var i=0;i<this.length;i++){
    var n=this.findMin(i);
    var car;
    car=this[n];
    this[n]=this[i];
    this[i]=car;
  }
  return this;
};
Array.prototype.findMin=function(item){
  var iMin=this[item];
  for(var i=item+1;i<this.length;i++){
    if(iMin>this[i]){
      iMin=this[i];
      item=i;
    }
  }
  return item;
};


//归并排序
Array.prototype.mSort=function(s,e){
  if(s>e){
    return [];
  }else if(s==e){
    return [this[s]];
  }
  var c=Math.floor((s+e)/2);
  var left=this.mSort(s,c);
  var right=this.mSort(c+1,e);
  var result=[];
  while(left.length>0||right>0){
    if(left[0]<right[0]){
      result.push(left.shift());
    }else{
      result.push(right.shift());
    }
    if(left.length==0){
      result=result.concat(right);
      break;
    }else if(right.length==0){
      result=result.concat(left);
      break;
    }
  }
  return result;
};
document.write(arr.bSort());
</script>

posted @ 2015-08-03 10:18  BigPanda  阅读(292)  评论(0编辑  收藏  举报