算法

作者: 小碗吃不了 | 来源:发表于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)
      

    相关文章

      网友评论

          本文标题:算法

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