`

什么是算法时间复杂度

 
阅读更多

问题:

1 + 2 + 3 + ...... + 100 = ?

 

算法1:

int sum=0;

int n=100;

for(int i=1;i<=n;i++){

  sum +=  i;

}

System.out.println(sum);

 

算法2:

int sum=0;

int n=100;

sum=(1 + n)*n/2;

System.out.println(sum);

 

影响算法效率的因素:

1.算法的内容

2.编译的质量                           依赖编译器

3.问题的规模

4.机器执行指令的速度             依赖硬件

 

可控的影响因素:

算法                   规模

       算法1          n

       算法2          n

 

一个算法的执行数量     f(n)                是n的一个函数

一个算法的时间复杂度 O(f(n))           是执行数量经过一个规则得到的结果

 

执行数量计算时间复杂度的规则:

       取最高项                                     影响f(n)数值变化的最主要因素

       去掉常量                                     随着n的增长,该值可忽略

       去掉最高项的系数                       随着n的增长,该值可忽略

       去掉低次项                                 随着n的增长,该值可忽略

       没有最高项,值为常量1

 

       3 --> O(1)

       n --> O(n)

       2n+1 --> O(n)

       n^2 + 3n + 1 --> O(n^2)

       log2 n --> O(log n)

 

算法1的时间复杂度:O(n)

算法2的时间复杂度:O(1)

 

int x = 0;

int sum = 0;

for(int i=1;i<=n;i++){

  for(int j=1;j<=n;j++){

    x++;

    sum += x;

  }

}

 

f(n) = n * n;

时间复杂度:O(n^2)

 

int x = 0;

int sum = 0;

for(int i=1;i<=n;i++){

  for(int j=i;j<=n;j++){

    x++;

    sum += x;

  }

}

 

f(n) = n + (n-1) + (n-2) + ...... +1 = (n + 1) * n / 2 = n^2/2 + n/2;

时间复杂度为:O(n2)

 

效率:

O(1) < O(log n) < O(n) < O(n*log n) < O(n^2) < O(n^3) < O(n!) ......

 

从f(n)转O(n)比较简单,问题是怎么计算f(n),需要数学的知识。

分享到:
评论

相关推荐

    关于算法时间复杂度的计算

    算法时间复杂度的计算 算法时间复杂度的计算是计算机科学中一个非常重要的概念,它描述了算法执行时间随着输入规模的变化而增长的速度。时间复杂度通常用大 O 记法表示,即 O(f(n)),其中 f(n) 是问题规模 n 的函数...

    算法 时间复杂度 空间复杂度 经典

    ### 算法的时间复杂度与...通过上述内容,我们可以了解到算法的时间复杂度与空间复杂度是如何定义的,以及如何计算不同类型的算法的时间与空间复杂度。这对于评估算法的效率至关重要,有助于选择最适合特定问题的算法。

    算法时间复杂度

    计算时间复杂度主要关注算法中最基本的操作(如比较、赋值等),并忽略非基本操作和常数项的影响。具体步骤包括: - 确定基本操作:找出算法中重复执行次数最多的操作。 - 计算基本操作的执行次数:分析算法流程,...

    算法时间复杂度的计算方法

    算法时间复杂度的计算方法 时间复杂度是衡量算法性能的重要指标,它描述了算法执行时间与问题规模之间的关系。时间复杂度是算法的渐近性质,它定义了算法的执行时间与问题规模之间的关系。 时间复杂度的计算方法...

    时间复杂度的几种计算方法

    时间复杂度的几种计算方法 时间复杂度是算法优劣的重要指标,是数据结构的重要理论基础,是学习和教学过程中贯穿始终的主要线索。...理解时间复杂度的概念和计算方法,对算法的优化和评估至关重要。

    关于递归算法时间复杂度分析的探讨.pdf

    关于递归算法时间复杂度分析的探讨,是一个深入理解算法效率和优化的关键议题。递归,作为解决问题的一种强大工具,其本质是将复杂问题分解为更简单的子问题,通过求解这些子问题来达到最终解决方案的目的。然而,...

    排序算法时间复杂度的分析java语言描述

    以下是对选择排序、冒泡排序、归并排序、快速排序和插入排序这五种常见排序算法的详细介绍,以及如何分析它们的时间复杂度。 1. **选择排序(Selection Sort)** - 原理:选择排序是一种简单直观的排序算法,它...

    遗传禁忌搜索算法收敛性和时间复杂度分析

    应用马尔科夫链模型证明了遗传禁忌搜索算法是以概率1收敛到全局最优解的,并应用求解随机算法时间复杂度的方法,即求解算法的期望收敛时间,估算了该算法的时间复杂度,结果证明该算法的时间复杂度与所得解的多样性、...

    排序算法时间复杂度的研究.pdf

    ### 排序算法时间复杂度的研究 #### 引言 排序是计算机科学中的基础操作之一,主要用于对数据集中的元素按照特定的顺序进行排列。排序算法的效率直接关系到计算机程序的整体性能。根据数据是否完全加载到内存中,...

    NOIP普及组 提高组 CSP-J CSP-S初赛 算法的时间复杂度部分题目(2023.09.15)C.pdf

    在计算机科学中,算法的时间复杂度是对算法运行时间的一个度量,它反映了问题规模n增长时,算法执行步骤的数量的增长趋势。本题集主要涉及了NOIP(全国青少年信息学奥林匹克竞赛)普及组和提高组的CSP-J(Junior)和...

    数据结构时间复杂度

    这里 \( O(f(n)) \) 表示随着问题规模 \( n \) 的增大,算法执行时间的增长率和 \( f(n) \) 的增长率相同,这被称为算法的渐近时间复杂度,简称时间复杂度。其中 \( f(n) \) 是问题规模 \( n \) 的某个函数。 **大O...

    算法时间复杂度的实验测试.zip_堆排序;算法时间复杂度_时间复杂度_胡书晗

    在计算机科学领域,算法的时间复杂度是对算法运行所需计算工作量的度量,它反映了算法执行效率与输入数据规模之间的关系。本实验测试的主题聚焦于堆排序算法的时间复杂度分析,由胡书晗进行研究。堆排序是一种基于...

    算法的设计与分析——时间复杂度.docx

    算法设计与分析——时间复杂度 算法设计与分析是计算机科学中的一门重要课程,旨在研究和分析...通过本实验,我们可以看到快速排序的时间复杂度最低,同时也了解了算法设计与分析的基本概念和时间复杂度的计算方法。

    算法的时间复杂度分析.pdf

    在算法设计中,准确计算时间复杂度对于评估算法的效率至关重要。《算法的时间复杂度分析》中提出了一些计算时间复杂度的方法: ##### 4.1 直接计算法 直接计算法适用于可以直接计算出语句频度的情况。例如,求两个...

    算法实验代码和报告(时间复杂度、0-1背包问题、分治与贪心、蛮力法)

    本资源包含的“算法实验代码和报告”聚焦于几个重要的算法概念:时间复杂度、0-1背包问题、分治策略以及贪心方法,这些都是计算机科学中基础且实用的知识点。 首先,我们来看**时间复杂度**。时间复杂度是用来衡量...

    算法复杂度计算方法

    时间复杂度是用来评估算法执行速度的一个重要指标,通常用于衡量算法随输入数据规模(通常标记为n)的增长趋势。 ##### 1. 时间频度 - **定义**:算法执行过程中基本操作的执行次数。例如,在一个循环中,每次循环...

    时间复杂度计算练习.zip

    4. **递归算法的时间复杂度**:讨论递归算法的时间复杂度计算,如斐波那契数列、快速排序等。 5. **案例分析**:提供具体的代码示例,分析其时间复杂度,如冒泡排序、选择排序、插入排序等。 6. **复杂度分析技巧**...

    算法的时间复杂度和空间复杂度

    时间复杂度是指执行算法所需要的计算工作量,而空间复杂度则是指执行这个算法所需要的内存空间。 稳定排序和非稳定排序是排序算法的一种分类。稳定排序是指在排序过程中,所有相等的数经过某种排序方法后,仍能保持...

Global site tag (gtag.js) - Google Analytics