导航
var a = 2, b = 4;
// 使用“和”形式
function swap(a, b) {
a = a + b; // 此时 a 等于两数之和
b = a - b; // 两数之和 减 b 为 a,此时 b 为 a
a = a - b; // 两数之和 减 b,相当于减 a,此时 a 为 b
return [a, b];
}
// 利用解构赋值
function swap(a, b) {
[a, b] = [b, a];
return [a, b];
}
排序算法都可以理解成:
外层:处理第几个元素(第几轮)
内层:在这一轮中怎么比较(或查找)
var arr = [3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48];
function bubbleSort(arr) {
var len = arr.length, temp;
for (var i = 0; i < len - 1; i++) {
for (var j = 0; j < len - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
var arr = [3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48];
function quickSort(arr) {
if (arr.length <= 1) return arr;
var leftArr = [], rightArr = [], q = arr[0];
for (var i = 1; i < arr.length; i++) {
if (arr[i] > q) {
rightArr.push(arr[i]);
} else {
leftArr.push(arr[i]);
}
}
return [].concat(quickSort(leftArr), [q], quickSort(rightArr));
}
类比:你在一个迷宫里找出口
| 算法 | 像什么? | 行为方式 |
|---|---|---|
| DFS(深度优先) | 一条路走到黑的人 | 第一条路一直往深处走,撞墙后再回到上一个分岔口换路 |
| BFS(广度优先) | 扫街式搜索的人 | 所有方向都先走一步 → 再走第二步 → 再走第三步……越来越远 |
对于算法来说 无非就是时间换空间 空间换时间