数据结构::算法复杂度

本文探讨了算法分析中的时间复杂度和空间复杂度。时间复杂度主要通过最坏、平均和最好情况来衡量,通常关注最坏情况。O的渐进表示法用于描述算法的渐进上界。在分析时,会忽略常数和低阶项,关注增长最快的部分。文章介绍了如何计算一般、分治和递归算法的时间复杂度。同时,空间复杂度同样重要,衡量算法执行所需的存储空间。算法所需的存储空间包括程序本身、输入数据和额外工作单元。
摘要由CSDN通过智能技术生成

       我们都知道一个问题有多种算法,而算法分析就是选择合适的算法和改进的算法。而一个算法的优劣性是从时间复杂度和空间复杂度来进行评判。那么接下来我们就来玩转时间,空间复杂度。害羞

 一、时间复杂度

1、虽然叫时间复杂度但是不是计算时间的,因为你想如果我们要算出一个算法的实际运行时间,那岂不是要将它上机测试运行,每一个都要这样做就会很麻烦,并且我们有的可能还比较抽象,很难计算出来,任务量大,很花费时间。因此我们用算法中语句执行的次数来衡量它。

再啰嗦点:

1)一个算法所耗费的时间=算法中每条语句的执行时间之和

2)每条语句的执行时间=语句的执行次数(即频度(Frequency Count))×语句执行一次所需时间

3)算法转换为程序后,每条语句执行一次所需的时间取决于机器的指令性能、速度以及编译所产生的代码质量等难以确定的因素。

4)若要独立于机器的软、硬件系统来分析算法的时间耗费,则设每条语句执行一次所需的时间均是单位时间,一个算法的时间耗费就是该算法中所有语句的频度之和。

 

    实际上也可以这么说,时间复杂度就是函数,而这个函数不是我们语言中的函数,而是数学中的函数,这个函数计算的就是运行次数。

穿插两个小概念:

1)算法分析

1. 最坏情况:任意输入规模的最大运行时间。(上界)
2.平均情况:任意输入规模的期望运行时间。
3.最好情况:任意输入规模的最小运行时间,通常最好情况不会出现。(下界)
例如:在一个长度为N的线性表中搜索一个数据x。
最坏情况:N次比较。
平均情况:N/2次比较。
最好情况:1次比较。
在实际中我们通常情况考量的是算法的最坏运行情况。也就是说对于任意输入规模N,算法的最长运行时间,理由如下:
1. 一个算法的最坏情况的运行时间是在任意输入下的运行时间上界。
2. 对于某些算法,最坏的情况出现的较为频繁。

 

2)O的渐进表示法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值