首页 > 代码库 > 常用的Array方法

常用的Array方法

//位置交换
Array.prototype.wrap=function(i,j){
  var temp;
  temp=this[i];
  this[i]=this[j];
  this[j]=temp;
  return this;
}


//数组去重
Array.prototype.unique=function(){
  var outArr=[];
  for(var i=0;i<this.length;i++){
    if(outArr.indexOf(this[i])==-1){
      outArr.push(this[i]);
    }
  }
  return outArr;
};


//冒泡排序
Array.prototype.boomp=function(){
  var flag=true;
  for(var j=0;j<this.length-1&&flag;j++) {
    flag = false;
    for (var i = 0; i < this.length - j - 1; i++) {
      if (this[i] > this[i + 1]) {
        this.wrap(i, i + 1);
        flag = true;
      }
    }
  }
  return this;
};


// 插入排序
Array.prototype.insertp=function(){
  for(var i=1;i<this.length;i++) {
    var j=i-1;
    var temp=this[i];
    while(temp<this[j]){
      this[j+1]=this[j];
      j--;
      if(j==-1){
        break;
      }
    }
    this[j+1]=temp;
  }
  return this;
};


//选择排序
Array.prototype.selectp=function(){
  var L=this.length;
  for(var j=0;j<L-1;j++) {
    var m=j;
    for (var i = j+1; i < L; i++) {
      if (this[m] > this[i]) {
        m = i;
        if(m!=j){
          this.wrap(j,m);
        }
      }
    }
  }
  return this;
};


//快排(一)
Array.prototype.quickp=function(left,right){
  if(left < right) {
    var s = this[left];
    var i = left;
    var j = right + 1;
    while(true) {
      // 向右找
      while(i + 1 < this.length && this[++i] < s) ;
      // 向左找
      while(j -1 > -1 && this[--j] > s) ;

         if(i >= j){

           break;
        }else{
          this.wrap( i, j);
        }
      }
    this[left] = this[j];
    this[j] = s;
    this.quickp(left, j-1); // 对左边进行递回
      this.quickp(j+1, right); // 对右边进行递回
  }
  return this;
};

常用的Array方法