diff --git a/b00-阅读笔记/学习js数据结构与算法/graph.js b/b00-阅读笔记/学习js数据结构与算法&算法图解/graph.js similarity index 100% rename from b00-阅读笔记/学习js数据结构与算法/graph.js rename to b00-阅读笔记/学习js数据结构与算法&算法图解/graph.js diff --git a/b00-阅读笔记/学习js数据结构与算法/index.html b/b00-阅读笔记/学习js数据结构与算法&算法图解/index.html similarity index 100% rename from b00-阅读笔记/学习js数据结构与算法/index.html rename to b00-阅读笔记/学习js数据结构与算法&算法图解/index.html diff --git a/b00-阅读笔记/学习js数据结构与算法/sort&search.js b/b00-阅读笔记/学习js数据结构与算法&算法图解/sort&search.js similarity index 85% rename from b00-阅读笔记/学习js数据结构与算法/sort&search.js rename to b00-阅读笔记/学习js数据结构与算法&算法图解/sort&search.js index 39b927d..250267f 100644 --- a/b00-阅读笔记/学习js数据结构与算法/sort&search.js +++ b/b00-阅读笔记/学习js数据结构与算法&算法图解/sort&search.js @@ -127,4 +127,21 @@ function binarySearch(arr, value) { } } return -1; +} + +function quickSort(arr) { + if (arr.length < 2) return arr; + var baseIndex = Math.floor(arr.length / 2); + var leftArr = []; + var rightArr = []; + for (var i = 0, len = arr.length; i < len; i++) { + if (i !== baseIndex) { + if (arr[i] < arr[baseIndex]) { + leftArr.push(arr[i]); + } else { + rightArr.push(arr[i]); + } + } + } + return quickSort(leftArr).concat([arr[baseIndex]]).concat(quickSort(rightArr)); } \ No newline at end of file diff --git a/b00-阅读笔记/学习js数据结构与算法/tree.js b/b00-阅读笔记/学习js数据结构与算法&算法图解/tree.js similarity index 100% rename from b00-阅读笔记/学习js数据结构与算法/tree.js rename to b00-阅读笔记/学习js数据结构与算法&算法图解/tree.js diff --git a/b00-阅读笔记/学习js数据结构与算法/学习js数据结构与算法.md b/b00-阅读笔记/学习js数据结构与算法&算法图解/学习js数据结构与算法.md similarity index 95% rename from b00-阅读笔记/学习js数据结构与算法/学习js数据结构与算法.md rename to b00-阅读笔记/学习js数据结构与算法&算法图解/学习js数据结构与算法.md index 3ba9240..1b08f19 100644 --- a/b00-阅读笔记/学习js数据结构与算法/学习js数据结构与算法.md +++ b/b00-阅读笔记/学习js数据结构与算法&算法图解/学习js数据结构与算法.md @@ -1,4 +1,4 @@ -# 学习js数据结构与算法 +# 学习js数据结构与算法 & 算法图解 ## 栈 @@ -642,6 +642,30 @@ function partition(arr, left, right) { } ``` +```js +// 《算法图解》思路 +// 基线条件:空数组或长度为1的数组不需要排序 +// 递归条件:每次选择一个基准值,得到三个部分(小于基准值 + 基准值 + 大于基准值) +// 对基准值两边的数组继续快排,并将最后的数组合并 +function quickSort(arr) { + if (arr.length < 2) return arr; // 基线条件 + var baseIndex = Math.floor(arr.length / 2); // 基准值 + var leftArr = []; + var rightArr = []; + for (var i = 0, len = arr.length; i < len; i++) { + if (i !== baseIndex) { + if (arr[i] < arr[baseIndex]) { + leftArr.push(arr[i]); // 小于基准值部分 + } else { + rightArr.push(arr[i]); // 大于基准值部分 + } + } + } + // 最后合并 + return quickSort(leftArr).concat([arr[baseIndex]]).concat(quickSort(rightArr)); +} +``` + ### 顺序搜索 一一对比。 diff --git a/b00-阅读笔记/学习js数据结构与算法/时间复杂度曲线图.jpg b/b00-阅读笔记/学习js数据结构与算法&算法图解/时间复杂度曲线图.jpg similarity index 100% rename from b00-阅读笔记/学习js数据结构与算法/时间复杂度曲线图.jpg rename to b00-阅读笔记/学习js数据结构与算法&算法图解/时间复杂度曲线图.jpg diff --git a/b03-数据结构与算法/算法图解.pdf b/b03-数据结构与算法/算法图解.pdf index de35e2d..18a4a4a 100644 Binary files a/b03-数据结构与算法/算法图解.pdf and b/b03-数据结构与算法/算法图解.pdf differ