时间复杂度计算
用迭代法计算 T ( n ) = 2 T ( n 2 ) + n , T ( 1 ) = 1 \ T(n) = 2T(\frac{n}{2}) +n, T(1) = 1 T(n)=2T(2n)+n,T(1)=1
证明时间复杂度
log 2 n = o ( n ) \ \log_2n = o(\sqrt{n}) log2n=o(n)
算法设计
- 长度为n的整数序列,不能一次性放入内存,要找出第k个最小的整数,请设计所需的数据结构及主要算法步骤
- 单循环赛,n个队伍,
n
=
2
k
\ n = 2^k
n=2k,规则有两条,①每一队要比赛剩下的
n
−
1
\ n-1
n−1个队伍 ②一天内一个队伍只可以比赛一次
(1) n = 2 k \ n = 2^k n=2k 时,最少几天
(2) n = 8 \ n = 8 n=8 时,最少几天 - n项工作,每项在
s
i
\ s_i
si 时开始,在
f
i
\ f_i
fi 时结束,对每项工作,可参加可不参加,但一旦开始贼不能停止且不重叠,用动态规划算法从n项工作中找到最大兼容
(1)写出状态转换方程及初始条件
(2)写出伪代码,分析时间复杂度 - 驾车从A地到B地,
L
A
B
=
s
\ L_{AB} = s
LAB=s,共
n
\ n
n 个加油站,第
i
\ i
i 个就站到A的距离是
d
i
\ d_{i}
di,且
0
=
d
1
<
d
2
<
.
.
.
<
s
\ 0=d_1<d_2<...<s
0=d1<d2<...<s,车子再加满油后可以行驶
m
\ m
m 公里,出发前油箱为空,如何加油次数最少
(1)给出求解该最优化问题的贪心选择策略
(2)最优值/最优解的贪心算法,并分析时间复杂度