【数据结构-时间复杂度】


前言

本文主要介绍数据结构中时间复杂度的概念以及计算举例。


一、时间复杂度是什么?

算法效率是通过时间复杂度和空间复杂度来描述的。
时间复杂度:算法中所有语句被重复执行的次数,记为O(f(n))。

算法的时间复杂度不仅依赖于问题的规模n,也取决于待输入数据的性质(如输入数据元素的初始状态)。

//Q:如何理解”也取决于待输入数据的性质“
//A:下面的i--执行次数,就不仅取决于数组A的大小n,也取决于k的位置、是否有K(即输入数据元素的初始状态)
	i = n -1;
	while(i >= 0 && (A[i] != k))
		i--;
	return i;

二、举例计算时间复杂度

例1.

下面程序的时间复杂度是: O ( m ∗ n ) O(m*n) O(mn)

for(i = 0; i < m; i++)
	for(j = 0; j < n; j++)
		a[i][j] = i*j

解析:
i = 1 内层 执行n次
i = 2 内层 执行n次

i = m 内层 执行n次

总计:
外层执行m次 ,内层执行m*n次,
O ( m ∗ n ) + O ( m ) = O ( m ∗ n ) O(m*n)+O(m) = O(m*n) O(mn)+O(m)=O(mn)

例2.

下面程序的时间复杂度是: O ( n 2 ) O(n^2) O(n2)

i = 0; s = 0;
while(++i <= n)
{
	int p = 1;
	for(j=0; j < i; j++)
		p *= j;
}

解析:
i = 1 内层 执行1次
i = 2 内层 执行2次

i =n 内层 执行n次

总计:
外层执行n次,内层执行(n+1)n/2次,
O ( n 2 ) + O ( n ) = O ( n 2 ) O(n^2)+O(n) = O(n^2) O(n2)+O(n)=O(n2)


总结

计算时间复杂度不易错的方法就是将内外层执行关系,列举出来,千万不要简单将内外层循环最大次数相乘:)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值