题目内容
(请给出正确答案)
[主观题]
假设将教材34页代码2.4中expand()算法的扩容策略改为“每次追加固定数目的单元”。a)试证明,在最坏情况下,单次操作中消耗于扩容的分摊时间为θ(n),其中n为向量规模;b)试举例说明,这种最坏情况的确可能发生。
答案
查看答案
第3题
第5题
第6题
第7题
第8题
对于几乎有序的向量,如教材代码2.26(60页)和代码2.27(60页)所示的起泡排序算法,都显得效率不足,比如,即便乱序元素仅限于A[0,√n)区间,最坏情况下仍需调用bubble()做Ω(√n)次调用,共做Ω(n)次交换操作和Ω(n3/2)次比较操作,因此累计运行Ω(n3/2)时间。
a)试改进原算法,使之在上述情况下仅需o(n)时间;
b)继续改进,使之在如下情况下仅需o(n)时间:乱序元素仅限于A[n-√n,n)区间;
c)综合以上改进,使之在如下情况下仅需o(n)时间:乱序元素仅限于任意的A[m,m+√n]区间。
第9题