时间复杂度

                                                 **` WELCOME`**

在这里插入图片描述

时空复杂度的分析

1. 什么是时间复杂度?

时间复杂度即为程序运行的所需时间。
我们将每一个所写的程序语句(即赋值,输出或运算等语句)的运行时间进行统一,认为他们所运行的时间是相同的,看作一个单位时间。

2. 时间复杂度怎么分析?

首先判断所写程序中的每一个语句各自分别的时间复杂度是多少,即判断每一个语句总共需要多少个单位时间,再将每一个语句所用的单位时间相加,计算出总共所需的单位时间,即为程序的时间复杂度。

通常,计算时间复杂度遵循以下三个原则

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

3. 有哪些常见的时间复杂度?

1. O(1)

#include<iostream>
using namespace std;

int main()
{
	int a = 3;   // o(1) 
	int b = 4;  // o(1)
	cout << a;  // o(1)
	return 0; 
}

时间复杂度为 o(1) + o(1) + o(1) = o(3)
遵循舍去常数项原则 该程序的时间复杂度为o(1)

2. o(n)

#include <iostream>
using namespace std;

int main() 
{
	int n; // o(1)
	cin >> n;  // o(1)
    int sum = 0;   // o(1)
    for (int i = 0; i < n; i++)
     // i = 0执行1次, i < n执行n+1次, i++执行n次
    { 
        sum += i; // 执行n次
    }  // 整个for循环执行3n+2次
    cout << sum;   // 执行1次
    return 0;
}

时间复杂度为o(1) + o(1) + o(1) + o(3n+2) + o(1) = o(3n+6)
遵循舍去常数项以及忽略系数原则 该程序的时间复杂度为o(n)

3. o(n^2)

int main() 
{
	for(int i = 0; i < n; i++)  // o(n)
		for(int j = 0; j < n; j++)  // o(n)
		{
			cout << 1;
		}
}

该程序为两重循环
时间复杂度为 o(n) * o(n) = o(n^2)

还有其他比较常见的时间复杂度,
如o(logn),o(nlogn),o(2^n),o(n!), o(n^3)

从小到大的顺序为O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3)
< O (2^n)< O(n!)

4. 分析时间复杂度的作用

在做题时可根据题目给出的变量的数据范围计算程序所需的时间复杂度,即运行的所需时间,又因为计算机1秒钟可计算10^9次,由此可进行判断我们的程序是否提交后会TLE

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值