【无标题】

时间复杂度

简介:在计算机科学中,时间复杂性,又称作时间复杂度time complexity)它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。

可能大家通过简介还是不能很好的了解什么是时间复杂度,通俗点来说就是一个程序运行所需的时间多少。

为什么要了解时间复杂度

很多时候大家应该都有遇到这种情况,明明自己写出了程序也能运行但是总是比朋友的代码慢很多,这时候大家应该也就看出问题了,当你不能很好的解决时间复杂度的问题时,代码其实就很容易出现问题。

常见的时间复杂度

常数阶时间:O(1)
线性阶时间:O(n)
平方阶时间:O(n^2)
对数阶时间:O(logn)
线性对数阶时间:O(nlogn)
立方阶时间:O(n^3)
指数阶时间:O(2^n)
阶乘阶时间:O(n!)

时间复杂度的也有着大小区分:
O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) <O(n^3) < O(2^n) < O(n!)

如何来计算一个程序的时间复杂度呢?

1.忽略常数项
2.忽略系数
3.只保留最高项

在这里插入代码片
#include <iostream>
using namespace std;
int main()
{
	int n=200;//执行一次
	int m=300;//执行一次
	while(m--)//执行m次
	{
		for(int i=1;i<=n;i++)//int i=1执行一次,i<=n要判断n+1次 i++要执行n次
		{
			cout<<"love you"<<endl;//输出n次
		}
	}
	//则总共需 T(n)=2+m*(3n+2) 用O(n)*O(m)来表示这个程序的时间复杂度
	return 0;
}

总结:

如果想要程序尽可能的避免不必要的错误,对时间复杂度的了解只能多不能少,只有通过对时间复杂度的充分了解才能使得自己的代码更耐打,不要抱着能运行就行的思想,程序需要严谨。以上只是个人的一点微弱了解,如果有什么不对的地方欢迎指出。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值