您的位置:首页 > 其它

算法导论2.3-7

2010-05-05 11:46 260 查看
Q:

请给出一个运行时间为θ(nlgn)的算法,使之能在一个由n个整数构成的集合S和另一个整数X时,判断出S中是否存在有两个其和等于X的元素。

A:

先对S[1 TO N]进行合并排序--------------------------------θ(nlgn)

FOR a <- [1 TO N-1]-------------------------------------n-1

用二分法试图找到b(最坏情况时),使得b+a==x---------θ(nlgn)

所以:

T(n)=θ(nlgn)

时间复杂度小结:

注意,下面函数图像差别是在n很大时,虽然下面n的范围是0-10,但其实这里省去了实际过程中的 c1nlgn与c2n^2的c1和c2,所以差别如此显著

最坏情况下,插入排序与合并排序的对比:





注:高的一条是n^2





最好情况下,插入排序时间复杂度θ(n),合并排序时间复杂度θ(nlgn)





注:高的一条为nlgn





另:

插入排序,选择排序:θ(n^2)

合并排序:θ(nlgn)

二分查找:θ(lgn)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: