1. 程式人生 > >常用的Array方法

常用的Array方法

== out true length function bre uic false 數組

//位置交換
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方法