时间复杂度分析理解

文章目录


前言

随着信息时代的不断发展,编程这门技术也越来越重要,很多人都开启了编程学习,本文就介绍了编程中时间复杂度的基础内容。


一、时间复杂度是什么?

一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)。\n\n一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f (n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。
 

二、使用步骤

1.判断代码是否超时

例如题目

题目描述

小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 aa 道题目,周六和周日每天做 bb 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 nn 题?

输入格式

输入一行包含三个整数 a, ba,b 和 nn.

输出格式

输出一个整数代表天数。

输入输出样例

输入 #1复制

10 20 99

输出 #1复制

8

说明/提示

对于 50 \%50% 的评测用例,1 \leq a, b, n \leq 10^{6}1≤a,b,n≤106.

对于 100 \%100% 的评测用例,1 \leq a, b, n \leq 10^{18}1≤a,b,n≤1018.

蓝桥杯 2022 省赛 B 组 C 题。

来看下面代码

#include<bits/stdc++.h>
using namespace std;
int  main(){
    long long n,a,b,h,g,c=0,d=0;
    cin>>a>>b;
    cin>>n;
   while(c>=n){
d++;

if(d%7==0||d%7==6)

c+=b;

else

c+=a;

}

cout<<d;
}

因为计算机一次大概只能计算10^9次,从代码上看,效率较低,且明显超时;所以要进行优化

2.代码优化

#include<bits/stdc++.h>
using namespace std;
int  main(){
    long long n,a,b,h,g,c=0,d=0;
    cin>>a>>b;
    cin>>n;
    h=a*5+b*2;
    g=n/h;
    n=n%h;
    while(n>0){
        d++;
        if(d<=5){
            n-=a;
        }
        else{
            n-=b;
        }
    
    }
    cout<<g*7+d;
}


总结

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值