c++数据结构及算法

可能存在的问题
所有的表示法都是用于比较解决同一问题的不同算法效率。但是,如果仅用于大O表示算法的效率,一些算法就有可能遭到永久的淘汰。问题是在大O表示法中,对于所有自然数(只有极少数情况例外),大O表示法不等式成立,则f(n)=O(g(n)).违反不等式的n的数目是有限的,这足以满足定义的条件。选择足够大的c,就可以减少这种例外情况的数目,然而如果f(n)<=cg(n)中的常数c非常大(例108),即使函数g看起来很有建设意义,也没有什么实际意义。
假如解决某个问题有两个算法,他们所需要的操作次数为108n和10n2,第一个函数是O(g(n)),第二个函数是O(n2)。仅根据大O表示法的信息,第二个算法就会因为操作次数增长过快被淘汰。但对于n<=107,即1千万。第二种算法的总操作元素少于第一种,要操作1千万元素的情况很少,故在此情况下第二种算法更好。
这样看来,或许需要另外一种包含常量的表示法,该常量根据实际需要可以非常大,双O(OO)表示法可以表示这类函数,如果f(n)=O(g(n)),且常熟太大没有实际意义,则f(n)=OO(g(n)),所以108就是OO(n)。但是太大取决于具体的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值