一、排序

  1. 冒泡排序

    //冒泡排序function bubbleSort(arr) {  for(var i = 1, len = arr.length; i < len - 1; ++i) {    for(var j = 0; j <= len - i; ++j) {      if (arr[j] > arr[j + 1]) {        let temp = arr[j];        arr[j] = arr[j + 1];        arr[j + 1] = temp;      }    }  }}
  2. 快速排序

    //快速排序function qSort(arr) {  //声明并初始化左边的数组和右边的数组  var left = [], right = [];  //使用数组第一个元素作为基准值  var base = arr[0];  //当数组长度只有1或者为空时,直接返回数组,不需要排序  if(arr.length <= 1) return arr;  //进行遍历  for(var i = 1, len = arr.length; i < len; i++) {    if(arr[i] <= base) {    //如果小于基准值,push到左边的数组      left.push(arr[i]);    } else {    //如果大于基准值,push到右边的数组      right.push(arr[i]);    }  }  //递归并且合并数组元素  return [...qSort(left), ...[base], ...qSort(right)];    //return qSort(left).concat([base], qSort(right));}

二、字符串

  1. 回文字符串

    //判断回文字符串function palindrome(str) {  var reg = /[\W\_]/g;  var str0 = str.toLowerCase().replace(reg, "");  var str1 = str0.split("").reverse().join("");  return str0 === str1;}
  2. 翻转字符串

    function reverseString(str) {  return str.split("").reverse().join("");}
  3. 字符串中出现最多次数的字符

    function findMaxDuplicateChar(str) {  var cnt = {}, //用来记录所有的字符的出现频次      c = ''; //用来记录最大频次的字符  for (var i = 0; i < str.length; i++) {    var ci = str[i];    if (!cnt[ci]) {      cnt[ci] = 1;    } else {      cnt[ci]++;    }    if (c == '' || cnt[ci] > cnt[c]) {      c = ci;    }  }  console.log(cnt)  return c;}

三、数组

  1. 数组去重

    //数组去重function uniqueArray(arr) {  var temp = [];  for (var i = 0; i < arr.length; i++) {    if (temp.indexOf(arr[i]) == -1) {      temp.push(arr[i]);    }  }  return temp;  //or  return Array.from(new Set(arr));}

四、查找

  1. 二分查找

    //二分查找function binary_search(arr, l, r, v) {  if (l > r) {    return -1;  }  var m = parseInt((l + r) / 2);  if (arr[m] == v) {    return m;  } else if (arr[m] < v) {    return binary_search(arr, m+1, r, v);  } else {    return binary_search(arr, l, m-1, v);  }}

五、搜索

  1. 深度优先搜索

    //深搜 非递归实现function deepTraversal(node) {  var nodeList = [];  if (node) {    var stack = [];    stack.push(node);    while(stack.length != 0) {      var childrenItem = stack.pop();      nodeList.push(childrenItem);      var childrenList = childrenItem.children;      for (var i = childrenList.length-1; i >= 0; i--) {        stack.push(childrenList[i]);      }    }  }  return nodeList;}
  2. 广度优先搜索

    //广搜function wideTraversal(node) {  var nodes = [];  if (node != null) {    var queue = [];    queue.unshift(node);    while (queue.length != 0) {      var item = queue.shift();      nodes.push(item);      var children = item.children;      for (var i = 0; i < children.length; i++)        queue.push(children[i]);    }  }  return nodes;}

持续更新中~~~