数据结构与算法-绪论
第一章绪论
数据结构ADT
数据类型+操作
ADT结构
- 一个ADT包含两个部分
- 数据的声明
- 运算的声明
常用的ADT
种类 链表、栈、队列、优先队列、二叉树、字典、并查集(合并查找)、散列表、图、其他类型
什么是算法
算法就是用一条接一条的指令来解决給定的问题。
如何比较算法
执行时间
执行语句数
理想解决方案:
- 理想的解决方案 假设用一个函数(如f(n))来表示一个算法的运行时间,该函数的输入参数就是问题的规模n。然后比较这些不同函数所对应的运行时间。这种比较与机器时间、编程风格等无关。
增长率
渐进分析
- 循环:一个循环体的运行时间最多为,循环体内的语句的运行时间(包括循环条件判断)与迭代次数的乘积。
- 嵌套循环:从内到外进行分析。总的运行时间是所有循环规模的乘积。
- 顺序执行语句:每条语句的运行时间相加。
- if-then-else条件语句:最坏情况下的运行时间为,条件判断的时间+最大值(then部分的语句运行时间或else部分的语句运行时间)。
- 对数级时间复杂度:如果算法可以在常数时间把问题的规模按照某个分数(一般是1/2)分解,那么该算法的复杂度为O(logn)
渐进表示法的性质
常用对数和累加公式
分治法主定理
-
公式:
$$
T(n) = 2T(n/2)+O(n)
$$ -
规律:
- 例题部分:
问题规模减小和递归求解主定理
- 问题规模减小和递归求解主定理的变型
浙公网安备 33010602011771号