算法的时间复杂度


一.实例:

1.用算法表白:“爱你n遍”。

#include<stdio.h>
​
//算法1:逐步递增型爱你
void loveYou(int n) //n为问题规模 
{
    int i=1; //爱你的程度  --> 设为语句1 
    while(i<=n) //设为语句2 
    {
        i++; //设为语句3 
        printf("I love you %d \n",i); //设为语句4 
    } 
    printf("I love you more than %d \n",n); //设为语句5 
} 
​
int main() //程序入口 
{
    loveYou(3000); //调用函数,表达爱意 
    return 0;
}

假设上述标记的5条语句执行时间相同(实际上时间不同,但考虑太多外在条件,就难以论述时间复杂度)

语句频度:

语句1-->只执行一次,因为顺序结构

语句2-->执行了3001次,前3000次是符合i<=3000(i初值为1,n为3000,最后一次是i为3000时进行循环后i为3001,最后

进行了一次循环条件的判断,发现不符合,跳出循环)

语句3-->执行了3000次,因为只有进入循环才执行i++,循环了3000次

语句4-->执行了3000次,因为只有进入循环才执行该语句,循环了3000次

语句5-->只执行一次,因为顺序结构

所以,当问题规模n为3000时,就会花费T(3000)=1+3001+3000 * 2+1=3000 * 3+3

-->时间开销与问题规模n的关系:T(n)=3n+3

问题1:是否可以忽略时间复杂度表达式中的某些部分?

例如:T1(n)=3n+3,T2(n)=n * n +3n+1000,T3(n)=n * n * n + n * n + 9999999

问题规模n足够大时,时间复杂度表达式中低阶的部分就可以忽略不计,因为最终差距相对没多大

且最高阶的问题规模n的系数可以化为1,常数可化为1,因为都是一个定值。

算法时间复杂度大小关系:越大代表阶数越高

解答:

问题2:如果有好几千行代码,难道要按这种方法一行一行数去统计代码的时间复杂度?

解答:


二.练习:

例一:

例如当循环一次时,i为2;循环两次时,i为4-->成等比数列

多一次是跳出循环时的判断

例二:


三.总结:


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在进行排序算法时间复杂度分析时,我们通常使用大O表示法来描述算法执行所需的时间。大O表示法是一种定性描述算法时间复杂度的方法。 对于希尔排序算法,它的时间复杂度介于O(n^1.3)到O(n^2)之间。具体的时间复杂度取决于所选取的增量序列和增量的取值。根据研究结果,如果增量序列的选择合理,希尔排序算法时间复杂度约为O(n^1.3)。 对于其他排序算法时间复杂度分析,我们可以通过比较基本操作的重复执行次数来进行。假设问题规模为n,解决该问题的算法中基本操作的执行次数为T(n)。如果存在一个辅助函数f(n),使得T(n)/f(n)的极限值为不等于零的常数,那么我们就可以说f(n)是T(n)的同数量级函数。因此,我们可以表示T(n) = O(f(n)),其中O(f(n))被称为算法的渐进时间复杂度,简称时间复杂度时间复杂度越高,算法的执行效率越低。 举例来说,简单选择排序算法的最坏、最好和平均时间复杂度都为O(n^2),因此它是常见排序算法中性能最差的排序算法。在简单选择排序中,每一趟排序都需要选择出最小排序码的记录,需要进行n-i次比较,因此总的比较次数为∑i=1n−1(n−i)=n(n−1)/2=O(n^2)。 综上所述,排序算法时间复杂度分析可以根据不同算法的特点和基本操作的重复执行次数进行。希尔排序算法时间复杂度介于O(n^1.3)到O(n^2)之间,而简单选择排序算法时间复杂度是O(n^2)。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [常见的排序算法及其复杂度分析](https://blog.csdn.net/Lyf_Ah/article/details/123796354)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [排序算法时间复杂度](https://blog.csdn.net/Ehontoo/article/details/124274303)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值