【数据结构和算法】Day 5

本文详细解释了各种常见的时间复杂度,包括O(1)、O(logn)、O(n)、O(nlogn)等,并通过具体代码示例介绍了如何评估算法的时间复杂度。此外还讨论了空间复杂度的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int i, j;
for( i=0; i < n; i++ )
{
     function(i);
}

void function(int count)
{
     printf( "%d" , count);
}

函数体是打印这个参数,这很好理解。function函数的时间复杂度是O(1),所以整体的时间复杂度就是循环的次数O(n)。


int i, j;
for( i=0; i < n; i++ )
{
     function(i);
}

void function(int count)
{
int j;
for( j=count; j < n; j++)
     {
     printf( "%d" , j);
     }
}

整体的时间复杂度就是循环的次数O(n^2)。


常见的时间复杂度

例子时间复杂度专业术语
5201314O(1)常数阶
3n+4O(n)线性阶
3n^2+4n+5O(n^2)平方阶
3log(2)n+4O(logn)对数阶
2n+3nlog(2)n+14O(nlogn)nlogn阶
n^3+2n^2+4n+6O(n^3)立方阶
2^nO(2^n)指数阶

其所耗费的时间从小到大依次是:O(1)  <  O(logn)  <  O(n)  <  O(nlogn)  <  O(n^2)  <  O(n^3)  <  O(2^n)  <  O(n!)  <  O(n^n)


如果我们查找一个有n个随机数字字数组中的某个数字,最好的情况是第一个数字就是,那么此时,算法的时间复杂度就是O(1),但也有可能这个数字就在最后一个位置,那么时间复杂度为O(n)。


平均运行时间是期望的运行时间。


最坏运行时间是一种保证。在应用中,这是一种最重要的需求,通常除非特别指定,我们提到的运行时间都是最坏情况的运行时间。


在程序设计中,通常时间和空间是可以互相转换的,我们经常使用空间来换取时间,即用大的空间复杂度来保证小的时间复杂度。


算法的空间复杂度:通过计算算法所需要的存储空间实现,算法的空间复杂度的计算公式记作:S(n)=O(f(n)),其中n为问题的规模,f(n)为语句关于n所占存储空间的函数。


通常,我们用“时间复杂度”来指运行时间的需求,用“空间复杂度”指空间需求。


当直接说“复杂度”时,通常指的是时间复杂度。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值