美文网首页程序员
时间复杂度的学习记录

时间复杂度的学习记录

作者: 墨_辰 | 来源:发表于2018-08-28 16:18 被阅读0次

算法的时间复杂度和空间复杂度,这个问题是我从上学时就没有搞懂的问题,记得考试的时候都是找几个经典的算法,强行记下他们的时间复杂度和空间复杂度的,现在早忘得干净了。

时间复杂度:
时间复杂度的计算并不是计算程序具体运行的时间,而是算法执行语句的次数。
常见的时间复杂度有: 常数阶O(1), 对数阶O(log2 n), 线性阶O(n), 线性对数阶O(n log2 n), 平方阶O(n^2), 立方阶O(n^3) k次方阶O(n^K), 指数阶O(2^n)。 随着n的不断增大,时间复杂度不断增大,算法花费时间越多。
时间复杂度的计算规则(大O记法):
1、用常数1取代运行时间中的所有加法常数。
2、在修改后的运行次数函数中,只保留最高阶项。
3、如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。

(1) 如果算法的执行时间不随着问题的规模n的增长而增长,即使算法中有上千条语句,执行时间也只是一个比较大的常数。此类算法的时间复杂度为O(1);->常数阶
(2) 当有多个循环嵌套时,算法的时间复杂度是由嵌套层数最多的循环语句的语句频度决定的;
(3) 通常我们计算时间复杂度都是计算最坏情况 ;

*********************较好********************
常数阶O(1):

int sum = 0, n = 100;       /*执行一次*/
sum = (1 + n) * n / 2;      /*执行一次*/
printf("%d",sum);           /*执行一次*/

对数阶O(log2 n):

int count = 1;      
while (count < n){
   count = count * 2;
  /*时间复杂度为O(1)的程序步骤序列*/
}

线性阶O(n):

int i;      
for(i = 0; i < n; i++){
    /*时间复杂度为O(1)的程序步骤序列*/
}
线性对数阶O(n log2 n):

*********************一般*********************
平方阶O(n^2):

int i, j;      
for(i = 0; i < n; i++){
    for(j = 0; j < n; j++){
        /*时间复杂度为O(1)的程序步骤序列*/
    }
}

*********************较差********************
立方阶O(n^3):

int i, j;      
for(i = 1; i < n; i++)
    for(j = 1; j < n; j++)
        for(j = 1; j < n; j++){
            /*时间复杂度为O(1)的程序步骤序列*/
 
        }

k次方阶O(n^K),
指数阶O(2^n)。

相关文章

  • 两数之和 - Rust

    采用 HashMap 记录减少时间复杂度: 复杂度分析空间复杂度: O(N):主要是记录 hash 值。时间复杂度...

  • 时间复杂度的学习记录

    算法的时间复杂度和空间复杂度,这个问题是我从上学时就没有搞懂的问题,记得考试的时候都是找几个经典的算法,强行记下他...

  • 算法系列:算法的时间复杂度(Objective-C样例)

    用这篇博客记录一下学习如何计算时间复杂度的过程。本文会从时间复杂度的定义到具体案例的练习,让初学者对时间复杂度有个...

  • 学习记录-时间复杂度计算

    算法时间复杂度的定义: 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变...

  • 时间复杂度

    近日在研究算法数据结构相关的知识,学习到一个名词,时间复杂度,特来此记录下。 时间复杂度:先来看看《“大话数据结构...

  • 复杂度分析(下)笔记:浅析最好、最坏、平均、均摊时间复杂度

    复杂度分析(下)笔记:浅析最好、最坏、平均、均摊时间复杂度 最好时间复杂度和最坏时间复杂度在 渐近符号学习 中已经...

  • 四种算法思想(上)- 分治、回溯

    四种算法思想 学习算法,有两个比较重要的基础要学习。 首先是复杂度的计算。复杂度包括时间复杂度和空间复杂度,通过对...

  • 常用算法

    时间复杂度 VS 空间复杂度 一般最先接触的就是时间复杂度和空间复杂度的学习了,这两个概念以及如何计算,是必须学的...

  • 程序员必须掌握的核心算法有哪些?

    一、算法最最基础1、时间复杂度 2、空间复杂度 一般最先接触的就是时间复杂度和空间复杂度的学习了,这两个概念以及如...

  • 算法的时间复杂度分析

    学习算法的读书笔记据说, 学习算法时, 时间复杂度是精髓, 把时间复杂度搞清楚, 算法就学成一半了? 为什么要学习...

网友评论

    本文标题:时间复杂度的学习记录

    本文链接:https://www.haomeiwen.com/subject/rllqwftx.html