前端须要晓得的数据结构与算法(延续更新中...)

基础数据结构

JS 数据范例

基础范例(栈 stack): Number String Boolean Null Undefined 和 Symbol(es6 新增)
援用范例(堆 heap):Object Array Function Data

数据结构

数据结构是指相互之间存在着一种或多种关联的数据元素的鸠合和该鸠合中数据元素之间的关联构成

算法

算法特性

有穷性、确定性、可行性、输入、输出

算法设想权衡

正确性、可读性、健壮性, 时候复杂度, 空间复杂度

时候复杂度

运转一段顺序的盘算工作量,时候复杂度即一般所说的算法实行所须要消耗的时候,时候越短,算法越好。然则,一个算法的实行时候每每没法准确预计。一般须要在现实的盘算机运转才晓得详细的实行时候。然则,也能够大抵举行预计,获得算法的时候复杂度。算法的实行时候每每和算法代码中语句实行的数目有关。

空间复杂度

运转一段顺序的内存占用,空间复杂度一般指的是算法顺序在盘算机只想中只想所须要的存储空间。

eg:

O(1):常数运算

O(n):1 层轮回

O(n^2):2 层轮回

O(n^n):n 层轮回

O(log2n):int i = 1, n = 100;while(i < n){ i = i * 2;}

算法分类

  1. 疾速排序算法
  2. 深度优先算法
  3. 广度优先算法
  4. 堆排序算法
  5. 合并排序算法

冒泡排序

道理:每次把最大或许最小的浮到最顶层

let arr = [33, 1, 46, 23, 35, 12, 30, 4, 16, 2]
function bubbleSort(array) {
  for (var i = 0; i < array.length; i++) {
    for (var j = 0; j < array.length - i - 1; j++) {
      if (array[j] > array[j + 1]) {
        var temp = array[j]
        array[j] = array[j + 1]
        array[j + 1] = temp
      }
    }
  }
  return array
}

插进去排序

道理:从数组的第二个和第一个比较,假如小于第一个则插进去到第一个元素之前,不然稳固
第三个一次和第二个第一个比,假如小于第二个且大于第一个则插进去第二个元素之前

let arr = [33, 1, 46, 23, 35, 12, 30, 4, 16, 2]
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
}

挑选排序

道理:从数组的第一个最先,向后比较,找到最小的和第一个交流

let arr = [33, 1, 46, 23, 35, 12, 30, 4, 16, 2]
function selectionSort(arr) {
  var len = arr.length
  var minIndex, temp
  for (var i = 0; i < len; i++) {
    minIndex = i
    for (var j = i + 1; j < len; j++) {
      if (arr[minIndex] > arr[j]) {
        minIndex = j
      }
    }
    temp = arr[i]
    arr[i] = arr[minIndex]
    arr[minIndex] = temp
  }
  return arr
}

算法复杂度

排序要领时候复杂度(最坏)时候复杂度(最好)空间复杂度稳固性复杂性
冒泡排序O(n^2)O(n)O(1)稳固简朴
插进去排序O(n^2)O(n)O(1)稳固简朴
挑选排序O(n^2)O(n^2)O(1)不稳固简朴

参考

  1. 前端你应当相识的数据结构与算法
  2. 怎样明白时候复杂度和空间复杂度 3. 时候复杂度和空间复杂度
    原文作者:缓缓先生
    原文地址: https://segmentfault.com/a/1190000018193918
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞