时间复杂度的概念以及计算

老规矩, 先看看维基定义:

The time complexity of an algorithm quantifies the amout of time taken by an algorithm to run as function. The complexity of an algorithm is commonly expressed using big O notation, which excludes coefficients and lower order terms.

算法的时间复杂度量化了函数运行算法所花费的时间,排除了系数以及低阶项,算法 通常用大写的 O 表示。

T(n) =  O(f(n))  (f(n) 一般是算法中频度最大的语句频度)

算法一(线性级别):

1 int x = 1;         // 计算 1 次
2 for  (in i = 0; i < n; i++)
3 {
4     x += 1;        // 计算 n 次
5 }

算法共计算 n + 1 次, n 无限大, 则 n ≈ n + 1(排除低阶项), 则此算法的时间复杂度为 T(n) =  O(f(n)) = O(n).

算法二 (平方级别):

1 for (int i = 0; i < N; i++)
2 {
3     for (int j = i + 1; j < N; j++)
4      {
5          x  += j    //  执行 n + (n - 1) + (n - 2) + ...... + 1 次
6     }
7 }

算法执行 n(n + 1)/2 次, 排除系数以及低阶项, 算法复杂度T(n) =  O(n2).

算法三 (指数级别) :

 1 // 二分查找, x[n] 为递增数组, 求数组中值等于 p 的下标。
 2 left = 0;
 3 right = n - 1;
 4 while (left <= right)
 5 {
 6     mid = (left  + right)/2;
 7
 8     case:
 9             x[mid] < t : left = mid + 1;
10             x[mid] = t : p = mid; break;
11             x[mid] > t : right = mid - 1;

共同 n 个元素, 二分执行,剩余元素依次为 n/21, n/22/, n/23,  n/2k ,其中 k 为程序执行次数。

令   n/2= 1, 则 n = 2k,  k = logn, 复杂度 O = (logn).

时间: 2024-11-08 21:50:04

时间复杂度的概念以及计算的相关文章

【405】算法时间复杂度和空间复杂度的计算

参考:算法时间复杂度和空间复杂度的计算 时间复杂度计算 去掉运行时间中的所有加法常数.(例如 n2+n+1,直接变为 n2+n) 只保留最高项.(n2+n 变成 n2) 如果最高项存在但是系数不是1,去掉系数.(n2 系数为 1) 原文地址:https://www.cnblogs.com/alex-bn-lee/p/11044540.html

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

算法的时间复杂度和空间复杂度合称为算法的复杂度. 1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了.并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多.一个算法中的语句执行次数称为语句频度或时间频度.记为T(n). (2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时

协方差矩阵概念及计算

理解协方差矩阵的关键就在于牢记它计算的是不同维度之间的协方差,而不是不同样本之间,拿到一个样本矩阵,我们最先要明确的就是一行是一个样本还是一个维度,心中明确这个整个计算过程就会顺流而下,这么一来就不会迷茫了 浅谈协方差矩阵 今天看论文的时候又看到了协方差矩阵这个破东西,以前看模式分类的时候就特困扰,没想到现在还是搞不清楚,索性开始查协方差矩阵的资料,恶补之后决定马上记录下来,嘿嘿~本文我将用自认为循序渐进的方式谈谈协方差矩阵. 统计学的基本概念 学过概率统计的孩子都知道,统计里最基本的概念就是样

一元函数微分学概念与计算(一)

割线斜率的极限,切线的斜率 导数定义 增量,Δx广义化,注意代换 三种等价说法 y=f(x)在点x0处可导 y=f(x)在点x0处导数存在 f'(x0)=A(A为有限数) 在一点可导的充分必要条件左导数 = 右导数 导数的几何意义 高阶导数的概念 微分的概念 原文地址:https://www.cnblogs.com/YC-L/p/12122299.html

一元函数积分学概念与计算(四)

定积分的计算 牛顿-莱布尼兹公式 含有间断点的函数也可能存在原函数 牛顿-莱布尼茨公式的推广 在积分区间[a, b]上只有有限个间断点的被积函数f(x),只要其在[a, b]上存在原函数,牛顿-莱布尼茨公式仍然成立 定积分的换元积分法 定积分的分部积分法 原文地址:https://www.cnblogs.com/YC-L/p/12172370.html

第一讲、行列式的基本概念与计算

原文地址:https://www.cnblogs.com/invisible2/p/10696679.html

【数据结构与算法】时间复杂度的计算

算法时间复杂度的计算 [整理] 博客分类: 算法学习 时间复杂度算法 基本的计算步骤  时间复杂度的定义     一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数.记作T(n)=O(f(n)),称O(f(n))为算法的渐进时间复杂度(O是数量级的符号 ),简称时间复杂度. 根据定义,可以归纳出基本的计算步骤 1. 计算出基本操作的执行次

数据结构基本概念及算法和算法分析 -- 引自《新编数据结构习题与解析》(李春葆等著)

本文引自<新编数据结构习题与解析>(李春葆等著)第1章. 1. 数据结构的基本概念 1.1 数据 数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称.例如,整数.实数和字符串都是数据. 1.2 数据元素 数据元素也称为节点,是表示数据的基本单元,在计算机程序中通常作为一个整体进行考虑和处理. 1.3 数据项 数据项是数据的最小单位.数据元素可以由若干个数据项组成.例如,学生记录就是一个数据元素,它由学号.姓名.性别等数据项组成. 1.4 数据对象

计算思维

Abstract 本文扯了一扯计算思维的相关内容.应XX要求,还特补充了点关于与本科生教育有关的内容. 引言 任何一门学科都有其核心思想.数学中,公理化的数理思维居于核心:工程学里,近似化的工程思维乃是黄金准则:法学上,权利与义务的思维则贯穿始终:经济学内,有着理性人的概念作为基本假设.一门学科的学习过程,相比知识的积累,更为重要的便是这种思维的培养.一门学科的思维,蕴含着整个学科理论体系的世界观与方法论,是整个学科研究经验的高度凝练与概括,真正可以称之为精华的东西. 那么对于计算机科学,我们又