算法

作者: 小碗吃不了 | 来源:发表于2021-07-08 15:36 被阅读0次
  • 任意长度数组的最小/大数

    es6 写法
    // 最小值
    Math.min(...arr)
    // 最大值
    Math.max(...arr)
    
  • 数组升序/降序

    var points = [40, 100, 1, 5, 25, 10];
    points.sort((a, b)=>{return a - b});//升序
    points.sort((a, b)=>{return b - a});//降序
    
  • 排序对象数组

    var cars = [
    {type:"Volvo", year:2016},
    {type:"Saab", year:2001},
    {type:"BMW", year:2010}];
    
    cars.sort((a, b)=>{return a.year - b.year});
    
  • 颠倒数组中元素的顺序(不排序仅颠倒)

    arr.reverse()
    
  • 数组去重

    一、 set与解构赋值去重(ES6中新增了数据类型set,set的一个最大的特点就是数据不重复)
    
    function unique(arr) {
      if (!Array.isArray(arr)) {
        console.log('type error!')
        return
      }
      return [...new Set(arr)]
    }
    
    
    二、Array.from与set去重
    
    
    function unique(arr) {
      if (!Array.isArray(arr)) {
        console.log('type error!')
        return
      }
      return Array.from(new Set(arr))
    }
    
  • 冒泡排序

    示例图
 function bubbleSort(arr) {
    let temp = null, flag = 1
    const len = arr.length
    for (let i = 0; i <= len - 1 && flag === 1; i++) {
      flag = 0
      for (let j = 0; j < len - i; j++) {
        if (arr[j] > arr[j + 1]) {
          temp = arr[j + 1]
          arr[j + 1] = arr[j]
          arr[j] = temp
          flag = 1// 发生数据交换flag置为1
        }
      }
    }
    return arr
  }
  • 选择排序

    示例图
数据规模越小越好

function selectionSort(arr) {
  var len = arr.length;
  var minIndex, temp;
  for (var i = 0; i < len - 1; i++) {
    minIndex = i;
    for (var j = i + 1; j < len; j++) {
        if (arr[j] < arr[minIndex]) {     // 寻找最小的数
            minIndex = j;                 // 将最小数的索引保存
        }
    }
    temp = arr[i];
    arr[i] = arr[minIndex];
    arr[minIndex] = temp;
 }
  return arr;
  }
  • 插入排序

    示例图
    function insertSort(arr) {
      for (let i = 1; i < arr.length; i++) {
      //将arr[i]插入到arr[i-1],arr[i-2],arr[i-3]……之中
      for (let j = i; j > 0; j--) {
        if (arr[j] < arr[j - 1]) {
            [arr[j - 1], arr[j]] = [arr[j], arr[j - 1]]
          }
        }
      }
        return arr
      }
    
  • 快速排序

    示例图
    const arr = [5, 2, 7, 8, 34, 7, 39, 12, 56, 9, 1]
    
    function quickSort(arr) {
      // 4.结束递归(当ary小于等于一项,则不用处理)
      if (arr.length <= 1) {
          return arr
      }
      // 1. 找到数组的中间项,在原有的数组中把它移除
      const middleIndex = Math.floor(arr.length / 2)
      const middle = arr.splice(middleIndex, 1)[0]
      // 2. 准备左右两个数组,循环剩下数组中的每一项,比当前项小的放到左边数组中,反之放到右边数组中
      const leftArr = [], rightArr = []
      for (let i = 0; i < arr.length; i++) {
        const current = arr[i]
        current < middle ? leftArr.push(current) : rightArr.push(current)
    
      }
      // 3. 递归方式让左右两边的数组持续这样处理,一直到左右两边都排好序为止。
      //(最后让左边+中间+右边拼接成最后的结果)
      return quickSort(leftArr).concat(middle, quickSort(rightArr))
    }
    
    console.log(bubbleSort(arr))  // [1, 2,  5,  7,  7, 8, 9, 12, 34, 39, 56]
    
  • 判断是否包含查询的字符串

    var s = 'Hello world!';
    s.includes('o') // true
    
  • 判断查询字符串是否在头部/尾部

    s.startsWith('Hello') // true
    s.endsWith('!') // true
    
  • 字符串重复指定次数返回

    "Hello,".repeat(2)
    

相关文章

  • 匈牙利算法

    算法思想 算法流程 算法步骤 算法实现 python 算法应用

  • web开发需要知道的几个算法

    算法分类 快速排序算法 深度优先算法 广度优先算法 堆排序算法 归并排序算法

  • 机器学习算法

    机器学习的算法分监督算法和无监督 算法。监督算法包括回归算法,神经网络,SVM;无监督算法包括聚类算法,降维算法。...

  • 字符串匹配

    BF 算法和 RK 算法BM 算法和 KMP 算法

  • 垃圾回收算法有几种类型? 他们对应的优缺点又是什么?

    常见的垃圾回收算法有: 标记-清除算法、复制算法、标记-整理算法、分代收集算法 标记-清除算法 标记—清除算法包括...

  • 头条-手撕代码

    [toc] 图算法 以及最短路径算法 树算法 手写LRU 排序算法 链表算法

  • 关于一些算法

    我们平常说的算法按照使用方向加密算法,排序算法,搜索算法,优化算法,音视频处理算法,图片处理算法 1.加密解密算法...

  • 给我巨大影响的技术书籍

    算法《算法概论》《算法设计与分析基础》 Anany Levitin《算法引论》Udi Manber《算法导论》《什...

  • 缓存相关

    cache淘汰算法:LIRS 算法 缓存那些事 Redis缓存淘汰算法,LRU算法,LRU算法讲解

  • LZW压缩算法

    参考链接:超级简单的数据压缩算法—LZW算法压缩算法——lzw算法实现LZW算法 LZW 压缩算法正确图解

网友评论

      本文标题:算法

      本文链接:https://www.haomeiwen.com/subject/ambzultx.html