javascrip常用算法总结

我心飞翔 分类:实例代码

当然这些算法不仅仅适用于javascript,同样也适用于其他语言。

下面就简单列举一下javascript中常见的一些算法,需要的朋友可以做一下参考。

一.线性查找:

比较简单,属于入门级的算法

//A为数组,x为要搜索的值
function linearSearch(A, x) {
  for (var index = 0; index < A.length; index++) {
    if (A[index] == x) {
      return index;
    }
  }
  return -1;
}

二.二分查找:

又称折半查找,适用于已排好序的线性结构。

//A为已按"升序排列"的数组,x为要查询的元素
//返回目标元素的下标
function binarySearch(A, x) {
  var low = 0, high = A.length - 1;
  while (low <= high) {
    var mid = Math.floor((low + high) / 2); //下取整   
    if (x == A[mid]) {
      return mid;
    }
    if (x < A[mid]) {
      high = mid - 1;
    }
    else {
      low = mid + 1;
    }
  }
  return -1;
}

三.冒泡排序:

//冒泡排序
function bubbleSort(A) {
  for (var i = 0; i < A.length; i++) {
    var sorted = true;
  //注意:内循环是倒着来的
    for (var j = A.length - 1; j > i; j--) {
      if (A[j] < A[j - 1]) {
        swap(A, j, j - 1);
        sorted = false;
      }
    }
    if (sorted) {
      return;
    }
  }
}

四.插入排序:

//插入排序
//假定当前元素之前的元素已经排好序,先把自己的位置空出来,
//然后前面比自己大的元素依次向后移,直到空出一个"坑",
//然后把目标元素插入"坑"中
function insertSort(A) {
  for (var index= 1; index< A.length; index++) {
    var x = A[index];
    for (var j = index- 1; j >= 0 && A[j] > x; j--) {
      A[j + 1] = A[j];
    }
    if (A[j + 1] != x) {
      A[j + 1] = x;
      println(A);
    }
  }
  return A;
}

五.字符串反转:

//字符串反转(比如:ABC -> CBA)
function inverse(s) {
  var arr = s.split('');
  var index= 0, j = arr.length - 1;
  while (index< j) {
    var t = arr[index];
    arr[index] = arr[j];
    arr[j] = t;
    index++;
    j--;
  }
  return arr.join('');
}

javascrip常用算法总结,这样的场景在实际项目中还是用的比较多的,关于javascrip常用算法总结就介绍到这了。

javascrip常用算法总结属于前端实例代码,有关更多实例代码大家可以查看

回复

我来回复
  • 暂无回复内容