这份清单,既是一份有助于对这些题目做深入研究的快速指南和参考,也算是计算机科学课程中不能忘记的基础知识总结,因此并不可能全面覆盖所有内容。
定义按顺序连续存储数据元素,通常索引从0开始 以集合论中的元组为基础 数组是最古老,最常用的数据结构
知识要点时间复杂度O(1)索引:一维数组:O(1),动态数组:O(1) O(n)查找:一维数组:O(n),动态数组:O(n) O(log n)最优查找:一维数组:O(log n),动态数组:O(log n) O(n)插入:一维数组:n/a,动态数组:O(n)
定义结点存储数据,并指向下一结点
最基础的结点包含一个数据和一个指针(指向另一结点)
要点为优化插入和删除而设计,但不利于索引和查找 双向链表包含指向前一结点的指针 循环链表是一种终端结点指针域指向头结点的简单链表 堆栈通常由链表实现,不过也可以利用数组实现
堆栈是“后进先出”(LIFO)的数据结构
同样地,队列也可以通过链表或数组实现
队列是“先进先出”(FIFO)的数据结构
时间复杂度
定义要点时间复杂度O(1)索引:哈希表:O(1) O(1)查找:哈希表:O(1) O(1)插入:哈希表:O(1)

定义要点时间复杂度索引:二叉查找树:O(log n) 查找:二叉查找树:O(log n) 插入:二叉查找树:O(log n)
定义要点当树的宽度大于深度时,该搜索算法较优 进行树的遍历时,使用队列存储树的信息 由于需要存储指针,队列需要占用更多内存 原因是:使用队列比深度优先搜索更为内存密集
时间复杂度
定义要点当树的深度大于宽度时,该搜索算法较优 利用堆栈将结点压栈
时间复杂度广度优先搜索 VS. 深度优先搜索细微的区别
定义要点时间复杂度O(n)最好的情况:归并排序:O(n) 平均情况:归并排序:O(n log n) 最坏的情况:归并排序:O(n log n)
定义
一种基于比较的排序算法 计算机体系结构支持快速排序过程
要点时间复杂度
定义要点时间复杂度O(n)最好的情况:归并排序:O(n) O(n2)平均情况:归并排序: O(n2) O(n2)最坏的情况:归并排序: O(n2)
归并排序 VS. 快速排序
|