From 4ee3af176b999fee622a6201f37e6eecd8e7f41e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E5=9C=86?= <374072213@qq.com> Date: Mon, 6 Feb 2023 19:57:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8C=E5=8F=89=E6=90=9C=E7=B4=A2=E6=A0=91:?= =?UTF-8?q?=20=E6=8E=92=E5=BA=8F=E5=B0=8F=E8=8A=82=20=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E5=88=B0=20=E5=88=A0=E9=99=A4=E7=BB=93=E7=82=B9=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=20=E7=9A=84=E4=B8=8B=E9=9D=A2=20(#340)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 插入排序: 修改插入排序思想描述 * Update insertion_sort.md * 二叉搜索树: 排序小节 移动到 删除结点代码 的下面 * fix: 双点 -> 双向 --------- Co-authored-by: Yudong Jin --- .../linkedlist_deque.java | 2 +- docs/chapter_tree/binary_search_tree.md | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/codes/java/chapter_stack_and_queue/linkedlist_deque.java b/codes/java/chapter_stack_and_queue/linkedlist_deque.java index c8e344c38..68c8a4a81 100644 --- a/codes/java/chapter_stack_and_queue/linkedlist_deque.java +++ b/codes/java/chapter_stack_and_queue/linkedlist_deque.java @@ -144,7 +144,7 @@ public class linkedlist_deque { deque.pushLast(3); deque.pushLast(2); deque.pushLast(5); - System.out.print("双点队列 deque = "); + System.out.print("双向队列 deque = "); deque.print(); /* 访问元素 */ diff --git a/docs/chapter_tree/binary_search_tree.md b/docs/chapter_tree/binary_search_tree.md index f30c04a20..b9f41bd7f 100644 --- a/docs/chapter_tree/binary_search_tree.md +++ b/docs/chapter_tree/binary_search_tree.md @@ -531,14 +531,6 @@ comments: true 删除结点操作也使用 $O(\log n)$ 时间,其中查找待删除结点 $O(\log n)$ ,获取中序遍历后继结点 $O(\log n)$ 。 -### 排序 - -我们知道,「中序遍历」遵循“左 $\rightarrow$ 根 $\rightarrow$ 右”的遍历优先级,而二叉搜索树遵循“左子结点 $<$ 根结点 $<$ 右子结点”的大小关系。因此,在二叉搜索树中进行中序遍历时,总是会优先遍历下一个最小结点,从而得出一条重要性质:**二叉搜索树的中序遍历序列是升序的**。 - -借助中序遍历升序的性质,我们在二叉搜索树中获取有序数据仅需 $O(n)$ 时间,而无需额外排序,非常高效。 - -![bst_inorder_traversal](binary_search_tree.assets/bst_inorder_traversal.png) - === "Java" ```java title="binary_search_tree.java" @@ -1040,6 +1032,14 @@ comments: true ``` +### 排序 + +我们知道,「中序遍历」遵循“左 $\rightarrow$ 根 $\rightarrow$ 右”的遍历优先级,而二叉搜索树遵循“左子结点 $<$ 根结点 $<$ 右子结点”的大小关系。因此,在二叉搜索树中进行中序遍历时,总是会优先遍历下一个最小结点,从而得出一条重要性质:**二叉搜索树的中序遍历序列是升序的**。 + +借助中序遍历升序的性质,我们在二叉搜索树中获取有序数据仅需 $O(n)$ 时间,而无需额外排序,非常高效。 + +![bst_inorder_traversal](binary_search_tree.assets/bst_inorder_traversal.png) + ## 7.3.2. 二叉搜索树的效率 假设给定 $n$ 个数字,最常用的存储方式是「数组」,那么对于这串乱序的数字,常见操作的效率为: