javascript算法

线性查找

function search(a,x){
  for(var i=0; i<a.length; i++){
    if ( a[i] == x ){
      return i+1;
    }
  }
  return -1;
}
View Code

二分法查找(hot)

//在二分法中,a为已经升序排列的数组

function search(a,x){
  var low=0, high=a.length-1;
  while ( low <= high ){
    var mid = Math.floor((low+high)/2);
    if ( a[mid] == x ){
      return mid+1;
    }
    if ( a[mid] < x ){
      low = mid + 1;
    }else{
      high = mid - 1;
    }
  }
  return -1;
}
View Code

冒泡排序

//一个用的for语句,一个用的while语句,作用一样,纯粹练手。。。

function bubbleSort(a){
  var i = a.length-1,j;
  var temp;
  for(i; i>0; i--){
    for(j=0; j<i; j++){
      if(a[j]>a[j+1]){
        temp = a[j+1];
        a[j+1] = a[j];
        a[j] = temp;
      }
    }
  }
  return a;
}
View Code
function bubbleSort(a){
  var i = a.length-1, j;
  var temp;
  while(i>0){
    for (j=0; j<i; j++){
      if (a[j] > a[j+1]){
        temp = a[j+1];
        a[j+1] = a[j];
        a[j] = temp;
      }
    }
    i--;
  }
  return a;
}
View Code

选择排序

function selectSort(array){
  var min, temp;
  var n = array.length;
  for (var i=0; i<n; i++){
    min = i;
    for (var j = i+1; j < n; j++){
      if (array[min] > array[j]){
        min = j;
      }
    }
    if (min != i){
      temp = array[i];
      array[i] = array[min];
      array[min] = temp;
    } 
  }
  return array;
}
View Code

Array.sort()排序

//使用sort()排序
function Qsort(b){
  return b.sort(function(a,b){return a>b});
}
//生成随机数
function rand(m,n){
  return Math.floor(Math.random()*(n-m)+m);
}
//生成数组
var z=[];
function arr(m,n,l){
  for(var i=0; i<l; i++){
    z.push(rand(m,n));
  }
  return z;
}
arr(10,100,12);
document.write(Qsort(z));
View Code

快速排序(hot)

插入排序

归并排序

数组去重

数组顺序扰乱

数组求交集

数组求并集

数组求差集

posted @ 2015-11-06 11:24  平底斜  阅读(243)  评论(0编辑  收藏  举报