计算算法时间复杂度

简介:

1、常见的算法的时间复杂度比较:

wKioL1myPWDBBE17AABGz6sUxMI242.png

常见的算法时间复杂度由小到大依次为:

  Ο(1)<Ο(logn)<Ο(n)<Ο(nlogn)<Ο(n2)<Ο(n3)<…<Ο(2)<Ο(n!)

Ο(1)表示基本语句的执行次数是一个常数,一般来说,只要算法中不存在循环语句,其时间复杂度就是Ο(1)。Ο(logn)、Ο(n)、Ο(nlogn)、Ο(n2)和Ο(n3)称为多项式时间,而Ο(2)和Ο(n!)称为指数时间。计算机科学家普遍认为前者是有效算法,把这类问题称为P类问题,而把后者称为NP问题。

这只能基本的计算时间复杂度,具体的运行还会与硬件有关。

2、计算时间复杂度的相关题目;

一、单项选择题

1.个算法应该是( )。

A.程序    B.问题求解步骤的描述    C.要满足五个基本特性    D. AC

1.    B

程序不一定满足有穷性,如死循环、操作系统等,而算法必须有穷。算法代表了对问题求解步骤的描述,而程序则是算法在计算机上的特定的实现。

2.某算法的时间复杂度为O(n2),表明该算法的( )。

A.问题规模是n2    B.执行时间等于n2

 

C.执行时间与n2成正比    D.问题规模与n2成正比

2.    C

时间复杂度为O(n2),说明算法的执行时间T(n)<=c * n2(c为比例常数),即T(n)=O(n2),时间复杂度T(n)是问题规模n的函数,其问题规模仍然是n而不是n2。

 

3.以下算法的时间复杂度为( )。

void fun(int n) {

    int i=l;

    while(i<=n)

        i=i*2;

}

A. O(n)    B. O(n2)    C. O(nlog2n)    D. O(log2n)

3.    D

基本运算是i=i*2,设其执行时间为T(n),则2T(n)<=n,即T(n)<=log2n=O(log2n)

4.n是描述问题规模的非负整数,下面程序片段的时间复杂度是()。

x=2;

while(x<n/2)

    x=2*x;

A. O(log2n)    B. O(n)    C. O(nlog2n)    D. O(n2)

4.    A

在程序中,执行频率最高的语句为“x=2*x”。设该语句共执行了 t次,则2t+1=n/2,故t=log2(n/2)-1=log2n-2,得 T(n)=O(log2n)。

5.2012年计算机联考真题】

求整数n (n>=0)阶乘的算法如下,其时间复杂度是( )。

int fact(int n){

    if (n<=l) return 1;

    return n*fact(n-1);

}

A. O(log2n)    B. O(n)    C. O(nlog2n)     D. O(n2)

5.    B

本题是求阶乘n!的递归代码,即n*(n-1)*...*1共执行n次乘法操作,故T(n)=O(n)

6.有以下算法,其时间复杂度为( )。

void fun (int n){

    int i=0;

    while(i*i*i<=n)

        i++;

}

A. O(n)      B. O(nlogn)    C.      D.



wKioL1myQIqDhlxTAABRLa9cdI4465.png

7.程序段

for(i=n-l;i>l;i--)

   for(j=1;j<i;j++)

       if (A[j]>A[j+l])

           A[j]与 A[j+1]对换;

其中n为正整数,则最后一行的语句频度在最坏情况下是( )。

 

A. O(n)    B. O(nlogn)    C. O(n3)    D. O(n2)

wKioL1myQMeQShWHAAA5qz0i5jQ509.png

 

8.以下算法中加下划线语句的执行次数为()。

int m=0, i, j;

for(i=l;i<=n;i++)

   for(j=1;j<=2 * i;j++)

      m++;

A. n(n+1)    B. n    C. n+1    D. n2

wKioL1myQPvyyXLYAAAfRuwsdvU706.png 

 

 


本文转自 lillian_trip 51CTO博客,原文链接:http://blog.51cto.com/xiaoqiaoya/1963708,如需转载请自行联系原作者

相关文章
|
5月前
|
算法 机器人
基于SOA海鸥优化算法的PID控制器最优控制参数计算matlab仿真
本课题研究基于海鸥优化算法(SOA)优化PID控制器参数的方法,通过MATLAB仿真对比传统PID控制效果。利用SOA算法优化PID的kp、ki、kd参数,以积分绝对误差(IAE)为适应度函数,提升系统响应速度与稳定性。仿真结果表明,SOA优化的PID控制器在阶跃响应和误差控制方面均优于传统方法,具有更快的收敛速度和更强的全局寻优能力,适用于复杂系统的参数整定。
|
9月前
|
算法 JavaScript 数据安全/隐私保护
基于GA遗传优化的最优阈值计算认知异构网络(CHN)能量检测算法matlab仿真
本内容介绍了一种基于GA遗传优化的阈值计算方法在认知异构网络(CHN)中的应用。通过Matlab2022a实现算法,完整代码含中文注释与操作视频。能量检测算法用于感知主用户信号,其性能依赖检测阈值。传统固定阈值方法易受噪声影响,而GA算法通过模拟生物进化,在复杂环境中自动优化阈值,提高频谱感知准确性,增强CHN的通信效率与资源利用率。预览效果无水印,核心程序部分展示,适合研究频谱感知与优化算法的学者参考。
|
机器学习/深度学习 缓存 算法
Python算法设计中的时间复杂度与空间复杂度,你真的理解对了吗?
【10月更文挑战第4天】在Python编程中,算法的设计与优化至关重要,尤其在数据处理、科学计算及机器学习领域。本文探讨了评估算法性能的核心指标——时间复杂度和空间复杂度。通过详细解释两者的概念,并提供快速排序和字符串反转的示例代码,帮助读者深入理解这些概念。同时,文章还讨论了如何在实际应用中平衡时间和空间复杂度,以实现最优性能。
288 6
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
320 0
|
11月前
|
算法 数据安全/隐私保护
基于Big-Bang-Big-Crunch(BBBC)算法的目标函数最小值计算matlab仿真
该程序基于Big-Bang-Big-Crunch (BBBC)算法,在MATLAB2022A中实现目标函数最小值的计算与仿真。通过模拟宇宙大爆炸和大收缩过程,算法在解空间中搜索最优解。程序初始化随机解集,经过扩张和收缩阶段逐步逼近全局最优解,并记录每次迭代的最佳适应度。最终输出最佳解及其对应的目标函数最小值,并绘制收敛曲线展示优化过程。 核心代码实现了主循环、粒子位置更新、适应度评估及最优解更新等功能。程序运行后无水印,提供清晰的结果展示。
276 14
|
搜索推荐 算法
插入排序算法的平均时间复杂度解析
【10月更文挑战第12天】 插入排序是一种简单直观的排序算法,通过不断将未排序元素插入到已排序部分的合适位置来完成排序。其平均时间复杂度为$O(n^2)$,适用于小规模或部分有序的数据。尽管效率不高,但在特定场景下仍具优势。
|
机器学习/深度学习 存储 缓存
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
文章主要介绍了排序算法的分类、时间复杂度的概念和计算方法,以及常见的时间复杂度级别,并简单提及了空间复杂度。
688 1
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
377 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
存储 算法
算法的时间复杂度和空间复杂度
本文详细讨论了算法的时间复杂度和空间复杂度,包括它们的概念、计算方法和常见复杂度的对比,并通过多个实例解释了如何计算算法的时间和空间复杂度。
1367 0
算法的时间复杂度和空间复杂度
|
算法 C语言
深入理解算法效率:时间复杂度与空间复杂度
深入理解算法效率:时间复杂度与空间复杂度