0%

JavaScript 算法

常见算法

  • 排序
  • 搜索
  • 递归

总结

算法提升编程思维。

时间复杂度

  • O(1), O(n), O(n^2) 等
  • 分析算法性能的基础

空间复杂度

  • 使用的额外内存
  • 例如递归栈空间

典型例子

斐波那契数列

1
2
3
4
function fib(n) {
if (n <= 1) return n;
return fib(n - 1) + fib(n - 2);
}

冒泡排序

1
2
3
4
5
6
7
8
9
10
11
function bubbleSort(arr) {
let n = arr.length;
for (let i = 0; i < n; i++) {
for (let j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
}
return arr;
}

数据结构与算法

  • 数组、链表、栈、队列的区别
  • 树和图的遍历

函数式风格

使用 map/reduce/filter 实现算法

性能优化

  • 避免重复计算
  • 使用缓存 memoization

常见问题

  • 递归导致堆栈溢出
  • 性能瓶颈在于 JavaScript 引擎

学习资源

  • LeetCode 中文社区
  • 《算法导论》
  • JavaScript-Algo 项目

FILLER_JS_1
FILLER_JS_2
FILLER_JS_3
FILLER_JS_4
FILLER_JS_5
FILLER_JS_6
FILLER_JS_7
FILLER_JS_8
FILLER_JS_9
FILLER_JS_10
FILLER_JS_11
FILLER_JS_12
FILLER_JS_13
FILLER_JS_14
FILLER_JS_15
FILLER_JS_16
FILLER_JS_17
FILLER_JS_18
FILLER_JS_19
FILLER_JS_20
FILLER_JS_21
FILLER_JS_22
FILLER_JS_23
FILLER_JS_24
FILLER_JS_25
FILLER_JS_26
FILLER_JS_27
FILLER_JS_28
FILLER_JS_29
FILLER_JS_30
FILLER_JS_31
FILLER_JS_32
FILLER_JS_33
FILLER_JS_34
FILLER_JS_35
FILLER_JS_36
FILLER_JS_37
FILLER_JS_38
FILLER_JS_39
FILLER_JS_40
FILLER_JS_41
FILLER_JS_42
FILLER_JS_43
FILLER_JS_44
FILLER_JS_45
FILLER_JS_46
FILLER_JS_47
FILLER_JS_48
FILLER_JS_49
FILLER_JS_50
FILLER_JS_51
FILLER_JS_52
FILLER_JS_53
FILLER_JS_54
FILLER_JS_55
FILLER_JS_56
FILLER_JS_57
FILLER_JS_58
FILLER_JS_59
FILLER_JS_60
FILLER_JS_61
FILLER_JS_62
FILLER_JS_63
FILLER_JS_64
FILLER_JS_65
FILLER_JS_66
FILLER_JS_67
FILLER_JS_68
FILLER_JS_69
FILLER_JS_70
FILLER_JS_71
FILLER_JS_72
FILLER_JS_73
FILLER_JS_74
FILLER_JS_75