开篇 您所在的位置:网站首页 cc算法从菜鸟到达人pdf 开篇

开篇

2023-07-20 04:41| 来源: 网络整理| 查看: 265

算法,从承认自己是一个菜鸟开始!

本文是《算法-从菜鸟开始》系列文章的开篇,欢迎收藏、留言、点赞。

一、何为算法

在计算机程序中通过某种计算方式(如利用某种数据结构、使用某种思维模式)以达到程序计算的目的,此种方式即是​​算法​​。

二、算法的意义

如同人生的意义一样,都是在有限的时间、空间内争取最优解!

消耗最少的时间、空间资源,获取最符合预期的效果!

三、如何判定算法最优解

在算法的世界里,存在两个非常重要的概念:​​时间复杂度​​和​​空间复杂度​​。

时间复杂度: 用于描述一个算法整个执行过程中所消耗的时间。

空间复杂度 用于描述一个算法在执行过程中所占用的存储空间。

一般来说,一个算法的时间复杂度越低,空间复杂度越低,则该算法就是最优的一种解。

但并不是说,时间或者空间某一个维度的值极低视为一个最优解,而是趋近于某种”平衡“状态下,时间复杂度和空间复杂度都可以接受,视为最优解。

四、时间复杂度

时间复杂度全称为​​渐进时间复杂度​​,并不是用来描述该算法的实现实际的执行时间,而是一种描述算法执行时间与数据规模之间的增长关系。

使用大OOO表示法来描述时间复杂度,如O(1)O(1)O(1)、O(n)O(n)O(n)、O(n2)O(n^2)O(n2)、O(logn)O(logn)O(logn)、O(log2n)O(log_2n)O(log2n)等

时间复杂度

描述

O(1)O(1)O(1)

常数阶,无论数据规模大小,其复杂度都是一样的

O(n)O(n)O(n)

线性阶,随着数据规模变大,其复杂度成线性递增

O(n2)O(n^2)O(n2)

平方阶,或者可以描述为指数阶, 如O(n2)O(n^2)O(n2)、O(nk)O(n^k)O(nk)

O(logn)O(logn)O(logn)

对数阶, 是对指数阶的逆运算,如O(logn)O(logn)O(logn)、O(log2n)O(log_2n)O(log2n)、O(log3n)O(log_3n)O(log3n)

O(1)O(1)O(1) 常数阶:

function printN (n) { const a = 1; const b = 2; const c = 3;

console.log(a + b + c);}

我们认为无论在函数体中有多少个变量,有多少行,如果没有循环、递归,我们都认为该程序在执行时的时间复杂度都是O(1)O(1)O(1)。

即使有循环、递归,也要看是否和nnn有关系

function printN (n) { // 注意这里的是1000,固定值 for (let i = 0; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有