数据结构与算法之时间复杂度计算

其实一开始接触数据结构与算法的时候,没有太注重时间复杂度这块的计算,觉得计算这个没有什么用处,而后来慢慢深入了之后,才发现想要实现一个代码要比用最高效的方法实现一个代码简单的多。学习数据结构与算法的意义就是在于让你的代码更加简洁。

计算

要计算 算法的时间复杂度 ,先要掌握什么是算法的频度
算法频度就是基本操作执行次数的总和 (f(n) n是执行问题的规模 )
再对整个算法的频次进行以下操作:

1 .去掉常数项
2 .只保留最高阶项
这就是时间复杂度 T(n) ,有时用O(f(n))表示

易错

有几个易错点是在计算时间复杂度容易忽略过去的

1.错误的认为if else 两个语句,实际上是一个
例如 
i=1;j=0;
while(i+j<=n)
{
    if (i>j) j++;
    else i++;      //整个循环体执行n次,而不是if执行n次,else执行n次
}
2.do while 和 while两个语句执行次数相同
3.一个while的判断句和while里面的操作执行频次是一样的;因此在利用大O数量级进行计算时,可以只主要考虑while里面的循环频次

随便举几个例子练习练习

1.嵌套循环 2层循环

k=0;
for (i=1;i<n;i++) //n次
{
    for (j = i ; j <n ; j++) //n+(n-1)+(n-2)+...+1
        k++;  //同上
}
时间复杂度 O(n²+2n)=O() 平方阶


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值