From 4f87e560bfbd0f9ad26c8dc075aac6a2fda010f7 Mon Sep 17 00:00:00 2001 From: Shine wOng <1551885@tongji.edu.cn> Date: Mon, 21 Oct 2019 18:22:26 +0800 Subject: [PATCH] update thu_dsa/chp3/chp3.md. --- thu_dsa/chp3/chp3.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/thu_dsa/chp3/chp3.md b/thu_dsa/chp3/chp3.md index f8807b5..eb1296a 100644 --- a/thu_dsa/chp3/chp3.md +++ b/thu_dsa/chp3/chp3.md @@ -1,5 +1,13 @@ Conclusion on Chapter Three: List -=============================== +================================= + +## 知识脉络 + +本章主要讨论`列表`。首先给出了`列表`的抽象数据接口,随后针对这些接口给出了不同的实现算法。在学习的过程中要重点去体会`列表`作为一种采用动态存储策略的数据结构,它的相关算法的优势和劣势,并且与`向量`这种静态存储策略的数据结构进行比较。 + +针对`列表`的诸多操作中,重点需要把握`无序列表`的唯一化算法,朴素的策略需要`O(n^2)`的时间复杂度,借助排序可以将性能优化到`O(nlogn)`,可是排序会破坏各节点原来的位置,可以通过一些改进策略来消除这个副作用。可以证明,`O(nlogn)`的时间性能已经是该问题的复杂度下界。 + +此外,还介绍了针对`列表`的三种排序算法,即`插入排序`,`选择排序`和`归并排序`,为了实现稳定的排序算法,需要把握一些细节。针对`归并排序`,尽管将原来的列表一分为二需要`O(n)`的额外时间,但仍不会对渐进意义下的时间复杂度造成本质影响。 ## List是采取动态的存储策略