《数据结构》学习笔记 1-2章

第一章 绪论

内容概要:

图灵机及RAM模型;算法复杂度评估 (不是时间,而是计算操作的次数)。

渐进分析:大O (最坏),大Θ;算法分析。

封底估算及实例 (计算大概量级)

  • 1 day =10^5 s; 300 year = 10^10 s.
  • 《数据结构》学习笔记 1-2章_第1张图片

两种算法:迭代,递归算法

  • 迭代vs递归:递归形式简介;但效率经常小于迭代。

两种策略:减而治之,分而治之;结合实例,两种典型的分析的方法:递归跟踪和递推式。

  • 《数据结构》学习笔记 1-2章_第2张图片
  • 《数据结构》学习笔记 1-2章_第3张图片

动态规划: 

fibonacci example, two implementation:recursive (O(2^n)) and iteration (O(n)).

LCS:待理解。

第二章 向量

向量即Vector, 与List一起,构成了最基础的顺序数据结构。

ADT v.s. Data structure, Difference? 

  • 《数据结构》学习笔记 1-2章_第4张图片

从数组到向量:向量是基于数组结构实现的。

向量ADT接口

向量支持的操作

  • 构造/析构,复制:
    •  《数据结构》学习笔记 1-2章_第5张图片

    • 《数据结构》学习笔记 1-2章_第6张图片

  • 扩容:size 满载时double;动态内存管理的效率考虑(递增式扩容 vs. 加倍式扩容)。
    • 《数据结构》学习笔记 1-2章_第7张图片
  • 寻秩访问:get(), put(), or 重载[ ]通过数组实现;
  • 单个插入:带插入位置整体后移;区间插入:带插入位置后整体位移一定长度。
  • 查找操作:对于有序向量,需支持判等操作;对于无序向量,需支持比较操作。=> 输入敏感算法。
  • 单元素/区间删除:单元素删除是在调用区间删除,而不是反过来;效率考虑。
  • 唯一化:用到查找和删除;复杂度:O(n^2)。
  • 遍历:通过函数指针或者函数对象实现。
    •   《数据结构》学习笔记 1-2章_第8张图片

有序向量(很多操作将大大简化):

  • 唯一化,低效版 vs 高效版。
  • 二分查找:复杂度1.5logn;
  • 《数据结构》学习笔记 1-2章_第9张图片
  • 《数据结构》学习笔记 1-2章_第10张图片
  • 《数据结构》学习笔记 1-2章_第11张图片 (该版本本质上在找大于e的第一个元素)

Fibonacci查找(与二分查找区别:如何切割/取划分的中点),复杂度:1.44 logn.

  •   《数据结构》学习笔记 1-2章_第12张图片

起泡排序算法的两种版本:

  • 《数据结构》学习笔记 1-2章_第13张图片
  •  《数据结构》学习笔记 1-2章_第14张图片
  • 算法复杂度:最好为O(n), 最坏为O(n^2).

 归并排序

  • 分治策略的典型应用;先分,再Merge。O(nlog(n))复杂度。

你可能感兴趣的:(《数据结构》学习笔记 1-2章)