没有合适的资源?快使用搜索试试~ 我知道了~
第一章绪论1.1时间复杂度的求法(一)循环主体中的变量参与循环条件的判断a) 找出基本操作b) 设基本操作执行次数为 T(n),根据初始条件和基本操作语句确定变
资源详情
资源评论
资源推荐
第一章 绪论
1.1 时间复杂度的求法
(一)循环主体中的变量参与循环条件的判断
a) 找出基本操作
b) 设基本操作执行次数为 T(n),根据初始条件和基本操作语句确定变量与次数的关系式
c) 带回循环条件,求出 T(n),确定 O(n)
(二)循环主体中的变量与循环条件无关
(1) 递归程序
a) 确定递推关系(注意这里确定的是基本操作次数的递推关系)
b) 推出递推关系与执行次数的表达式
c) 令低级递推关系中的次数为常数(0 或 1),整理式子
d) 推导出 T(n)
(2) 非递归程序
等比、等差数列求和
1.2 实例
王道单科 P8,综合第二题
1) 归类:循环主体中的变量参与循环条件的判断
基本操作:i++(注意不是 k 参与循环条件的判断)
初始条件 i=1,执行一次 i 加一,值为 2;执行第二次,i 再加一,值为 3;…;执行 T(n)
次,i 的值为 T(n)+1;
带回循环变量:i<n-1,终止条件为 i=n-1;既 T(n)+1=n-1
推出 T(n)=n-2,所以 T(n)=O(n)
2) 归类:循环主体中的变量参与循环条件的判断
基本操作:y=y+1
初始条件 y=0;执行一次 y 加一,执行 T(n)次后值 y=T(n);
带回循环变量:(T(n)+1)*(T(n)+1)>n
推出:T(n)=n½-1 所以 T(n)=O(n½)
3) 归类:循环主体中的变量与循环条件无关,非递归程序
T(n)= ∑∑∑1=O(n^3)
4) 归类:循环主体中的变量与循环条件无关,非递归程序
T(n)=M*N=O(M*N)
综合题第一题
归类:循环主体中的变量与循环条件无关,递归程序
递推关系已给,题中没给的要自己推出来
T(n)=2T(n/2)+n————①(注意:这里的 n,2 等都是执行次数,不是变量的值)
T(n/2)=2T(n/2*2)+n/2 ————②
把②带回①得到 T(n)=2*2*T(n/2*2)+2*n
令 T(n/2*2)中令 n/2*2=1,解出 n=2*2,2=Log2 n
T(n)=n*T(1)+n*Log2 n = n+n*Log2 n = O(n*Log2 n)
P7 第 4 题
归类:循环主体中的变量参与循环条件的判断
基本操作:x=x*2
初始条件:x=2,执行一次后 x=2*2,执行两次后 x=2*2*2,…,执行 T(n)次后,x=2^T(n)
带回循环变量:2^T(n)=n/2
T(n)= Log2(n) – 1 = O(Log2(n))
第 5 题
归类:循环主体中的变量与循环条件无关,递归程序
基本操作:n*fact(n-1)
递推关系:T(n)=1+T(n-1)(这里 1 为上面的基本操作执行了一次)
T(n-1)=1+T(n-2),代入上式得到:T(n)=1+1+T(n-2)
令 T(n-2)中 n-2=0,则 2=n
原式整理为:T(n)=n+T(0)(这里表示的是次数的变化,即我每次减一,前面就加一,
减到 n 时,前面也加到 n)
T(n)=n =O(n)
第二章 线性表、栈、队列
2.1 各种链表特殊操作的时间复杂度
DS 复杂度 操作
删除最后
元素
删除第一个元素
在最后插入
元素
在最前插入元素
单链表
O(n)
O(1)
O(n)
O(1)
循环单链表(头指针)
O(n)
O(1)
O(n)
O(1)
循环单链表(尾指针)
O(n)
O(1)
O(1)
O(1)
双链表(头指针)
O(n)
O(1)
O(n)
O(1)
双链表(尾指针)
O(1)
O(n)
O(1)
O(n)
双链表(头、尾指针)
O(1)
O(1)
O(1)
O(1)
循环双链表
O(1)
O(1)
O(1)
O(1)
注意:若题中选项出现多个时间复杂度合适选项,选择修改指针最少的。
2.2 链表的指针修改原则——不断链原则
先定义一下指针(个人定义)
主链接性指针——通过已知指针(头指针或尾指针)和该指针可以链接操作所有参与元素,即该
指针一断,元素失去控制(断链);
非主链接性指针——断开后不影响元素链接操作;
(1) 对只有主链接性指针的链表操作步骤
a) 建立新的主链接性指针
b) 修改旧主链接性指针
(2) 既有主链接性指针又有非主连接性指针
a) 修改非主链接性指针
b) 建立新的主链接性指针
c) 修改旧主链接性指针
2.3 链表算法设计
常用方法:头插法;尾插法;双指针;多指针
(1) 删除
删除一个链表元素时,能同步找到它的直接前驱是最高效的,而如何实现同步直接影响
算法的复杂程度
(2) 建表
头插法;尾插法;双指针,各有各的特点,自己总结吧
(3) 查找
这几次考的都是通过双指针的距离查找元素位置
(4) 排序
对无序链表排序,在空间复杂度为 O(1)的条件下,时间复杂度最佳为 O(n^2)
若算法设计是对当前排序的元素操作,则总体复杂度<=O(n^2)
若算法设计需要用到排序后的结果,则总体复杂度>=O(n^2)
2.4 顺序表算法设计思想
(1)双指针
a) 元素之间的距离,或利用该距离找元素
剩余25页未读,继续阅读
BellWang
- 粉丝: 17
- 资源: 315
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0