1、一填空题(每空 2 分,共 30 分)1算法的时间复杂性指算法中 的执行次数。2在忽略常数因子的情况下,O、 和 三个符号中, 提供了算法运行时间的一个上界。3设 Dn 表示大小为 n 的输入集合,t(I)表示输入为 I 时算法的运算时间, p(I)表示输入 I 出现的概率,则算法的平均情况下时间复杂性 A(n)= 。4分治算法的时间复杂性常常满足如下形式的递归方程:0n ,g()afn/c() d其中,g(n) 表示 。5. 分治算法的基本步骤包括 。6回溯算法的基本思想是 。7动态规划和分治法在分解子问题方面的不同点是 。8贪心算法中每次做出的贪心选择都是 最优选择。9PQ 式的分支限界法
2、中,对于活结点表中的结点,其下界函数值越小,优先级越 。10选择排序、插入排序和归并排序算法中, 算法是分治算法。11随机算法的一个基本特征是对于同一组输入, 不同的运行可能得到 的结果。12.对于下面的确定性快速排序算法,只要在步骤 3 前加入随机化步骤 ,就可得到一个随机化快速排序算法,该随机化步骤的功能是 。算法 QUICKSORT输入:n 个元素的数组 A1n。输出:按非降序排列的数组 A 中的元素。考 生 信 息 栏学院系 专业 年级 姓名 学号装 订 线1. quicksort(1, n)end QUICKSORT过程 quicksort(A, low, high)/ 对 Alow
3、high中的元素按非降序排序。2. if low0 then output ielse output “no solution”end SEARCH过程 find (low, high)/ 求 Alowhigh 中使得 Ai=i 的一个下标并返回,若不存在,/则返回 0。if (2) then return 0elsemid=2/)higlow(if (3) then return midelse if Amidhigh (3) Amid=mid (4) mid+1, high (5) find(low, mid-1)2. (1) 0 (2) i+d (3) Ci, k-1+Ck, j+ri*
4、rk*rj+1(4) Ci, j (5) C1, n3. (1) i=1 (2)ki+1 (3) 1 (4) i+1 (5) ki=0 (6) tagx, y=0 (7) x=x-dxki; y=y-dyki四. 算法设计题:1. 贪心选择策略:从起点的加油站起每次加满油后不加油行驶尽可能远,直至油箱中的油耗尽前所能到达的最远的油站为止,在该油站再加满油。算法 MINSTOPS输入:A、B 两地间的距离 s,A、B 两地间的加油站数 n,车加满油后可行驶的公里数 m,存储各加油站离起点 A 的距离的数组 d1n。输出:从 A 地到 B 地的最少加油次数 k 以及最优解 x1k(xi表示第 i
5、次加油的加油站序号) ,若问题无解,则输出 no solution。dn+1=s; /设置虚拟加油站第 n+1 站。 for i=1 to nif di+1-dim then output “no solution”; return /无解,返回end ifend fork=1; xk=1 /在第 1 站加满油。s1=m /s1 为用汽车的当前油量可行驶至的地点与 A 点的距离i=2while s1s1 then /以汽车的当前油量无法到达第 i+1 站。 k=k+1; xk=i /在第 i 站加满油。s1=di+m /刷新 s1 的值end ifi=i+1end whileoutput k, x1kMINSTOPS最坏情况下的时间复杂性:(n)