数据结构与算法分析(算法分析部分)

本文详细介绍了算法的时间复杂度概念及其重要性,并解释了如何使用大O表示法来简化算法的时间复杂度。此外,还讨论了对数在算法分析中的应用,通过具体的例子帮助读者更好地理解算法效率的评估。

1.算法:对于一个问题,某种算法被确定是正确的,还要考虑这个算法的可行性,比如时间和内存。
2.数学基础
时间复杂度:
如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数。T(n)称为这一算法的“时间复杂度”,当输入量n逐渐加大时,时间复杂度的极限情形称为算法的“渐近时间复杂度”。
我们常用大O表示法表示时间复杂度
原则:忽略低阶项和常数, 如:T(N)=O(2N^2)或者T(N)=O(N^2+N)简化成
T(N)=O(N^2)即可
最坏运行时间:即按照算法的最长时间来计算
for循环:n
嵌套for循环:n^2
当问题规模即要处理的数据增长时, 基本操作要重复执行的次数必定也会增长, 那么我们关心地是这个执行次数以什么样的数量级增长。所谓数量级可以理解为增长率。这个所谓的数量级就称为算法的渐近时间复杂度, 简称为时间复杂度。如何分析这个数量级呢? 由于基本操作的执行次数是问题规模n 的一个函数T(n), 所以问题就是我们要确定这个函数T(n)是什么, 然后分析它的数量级(增长率), 拥有相同数量级的函数 f(n) 的集合表示为 O(f(n)), O是数量级的标记。如果T(n)的数量级和f(n)同
3.运行时间中的对数:
分析算法最混乱的地方就在对数上面。对数经常出现的规律:如果一个算法用常数时间将问题的大小削减为其一部分,那么该算法就是Olog(N),若是削减到常数,那么该算法就是O(N)的。例如折半查找算法,在一个有序的数组中,查找A[i}=x,若是x大于中间的元素,那么就查找数组的右半部分,否则,查找数组的左半部分。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-乾坤-

????????????????????????

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值