美文网首页
写一些简单的算法

写一些简单的算法

作者: Pamcore | 来源:发表于2018-04-18 20:36 被阅读0次

    冒泡排序

      bubbleSort(arr) {
        for (let i = 0; i < arr.length; i++) {
          for (let j = i + 1; j < arr.length; j++) {
            if (arr[i] > arr[j]) {
              let temp = arr[i]
              arr[i] = arr[j]
              arr[j] = temp
            }
          }
        }
        return arr
      }
    

    二分法

      sortBisection(arr) {
        if (arr.length <= 1) return arr
        const left = []
        const right = []
    
        const middleIndex = Math.floor(arr.length / 2)
        const middleValue = arr.splice(middleIndex, 1)[0]
    
        for (let i = 0; i < arr.length; i++) {
          if (arr[i] < middleValue) {
            left.push(arr[i])
          } else {
            right.push(arr[i])
          }
        }
        return this.sortBisection(left).concat(middleValue, this.sortBisection(right))
      }
    

    内置方法sort排序

      sortObj(obj, property) {
        return obj.sort(function (a, b) {
          return a[property] - b[property]
        })
      }
    

    对象根据属性排序

      sortObj(obj, property) {
        return obj.sort(function (a, b) {
          return a[property] - b[property]
        })
      }
    

    去重

    • 利用对象的属性不能相同去重
      delWeight(arr) {
        let obj = {}
        let newArr = []
        for (let i = 0; i < arr.length; i++) {
          if (!obj[arr[i]]) {
            newArr.push(arr[i])
            obj[arr[i]] = 1
          }
        }
        return newArr
      }
    
    • 利用ES6 Set 去重
    function unique(arr) {
      return Array.from(new Set(arr));
    }
    
    • 利用for嵌套然后splice去重(ES5中最常见)
    function unique(arr) {
      for (var i = 0; i < arr.length; i++) {
        for (var j = i + 1; j < arr.length; j++) {
          if (arr[i] == arr[j]) {
            arr.splice(j, 1);
            j--;
          }
        }
      }
      return arr;
    }
    
    • 利用indexOf
    function unique(arr) {
      if (!Array.isArray(arr)) {
        console.log('type error!');
        return;
      }
      var arrary = [];
      for (var i = 0; i < arr.length; i++) {
        if (array.indexOf(arr[i]) === -1) {
          array.push(arr[i]);
        }
      }
      return array;
    }
    

    计算字符串中的字符出现次数

    getOccurrence(str) {
        const counter = {}
        str.replace(/(\w{1})/g, function (val) {
          counter[val] ? counter[val] += 1 : counter[val] = 1
        })
        return counter
      }
    

    相关文章

      网友评论

          本文标题:写一些简单的算法

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