JS实现常见算法

  1. 冒泡排序
    要点:相邻元素两两对比,若前面大于后面,则交换位置。
function bubbleSort(arr) {
  var len = arr.length;

  for(var i=0; i<len; i++){
    for(var j=0; j<len-1-i; j++){
      if(arr[j] > arr[j+1]){
        var temp = arr[j+1];
        arr[j+1] = arr[j];
        arr[j] = temp;
      }
    }
  }

  return arr;
}
  1. 选择排序
    要点:从第一个元素开始,与其后面的元素对比,找到最小的互换位置。
function selectionSort(arr) {
  var len = arr.length;

  for(var i=0; i<len-1; i++){
    var minIndex = i;
    for(var j=i+1; j<len; j++){
      if(arr[j] < arr[minIndex]){
        minIndex = j;
      }
    }
    var temp = arr[i];
    arr[i] = arr[minIndex];
    arr[minIndex] = temp;
  }

  return arr;
}
  1. 插入排序
    要点:从第二个元素开始,暂存当前元素。倒序遍历前面的元素,如果大于当前元素,则将其往后移动一位,直到跳出遍历,将之前暂存的元素插入到跳出遍历时的后一位。
function insertionSort(arr) {
  var len = arr.length;

  var preIndex, current;
  for(var i=1, i<len; i++){
    preIndex = i - 1;
    current = arr[i];
    while (preIndex >=0 && arr[preIndex] > current) {
      arr[preIndex+1] = arr[preIndex];
      preIndex --;
    }
    arr[preIndex+1] = current;
  }

  return arr;
}
  1. 二分查找
function binarySearch(arr, num, start, end) {
  var start = start || 0,
      end = end || arr.length;

  var mid = Math.floor((start + end) / 2);
  var midVal = arr[mid]

  if (start >= end) {
    return false
  }

  if (midVal === num) {
    return mid
  } else {
    if (midVal > num) {
      return binarySearch(arr, num, 0, mid)
    } else {
      return binarySearch(arr, num, mid + 1, arr.length)
    }
  }
}
  1. 遍历二叉树
    先序遍历
var preTraverse = function (node) {
  if (node) {
    console.log(node.value);
    preTraverse(node.left);
    preTraverse(node.right);
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 该系列文章主要是记录下自己暑假这段时间的学习笔记,暑期也在实习,抽空学了很多,每个方面的知识我都会另起一篇博客去记...
    Yanci516阅读 12,282评论 6 19
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,222评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,746评论 0 15
  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 5,165评论 0 12
  • 2016/7/25 黄洞洞昨天晚上吃了路边的麻辣烫,今天肚子疼。 2016/8/1 黄洞洞喝了隔夜绿豆汤,今天肚子...
    爱吃葡萄冰的鲸阅读 275评论 0 0