开篇 | 您所在的位置:网站首页 › cc算法从菜鸟到达人pdf › 开篇 |
算法,从承认自己是一个菜鸟开始! 本文是《算法-从菜鸟开始》系列文章的开篇,欢迎收藏、留言、点赞。 一、何为算法在计算机程序中通过某种计算方式(如利用某种数据结构、使用某种思维模式)以达到程序计算的目的,此种方式即是算法。 二、算法的意义如同人生的意义一样,都是在有限的时间、空间内争取最优解! 消耗最少的时间、空间资源,获取最符合预期的效果! 三、如何判定算法最优解在算法的世界里,存在两个非常重要的概念:时间复杂度和空间复杂度。 时间复杂度: 用于描述一个算法整个执行过程中所消耗的时间。 空间复杂度 用于描述一个算法在执行过程中所占用的存储空间。 一般来说,一个算法的时间复杂度越低,空间复杂度越低,则该算法就是最优的一种解。 但并不是说,时间或者空间某一个维度的值极低视为一个最优解,而是趋近于某种”平衡“状态下,时间复杂度和空间复杂度都可以接受,视为最优解。 四、时间复杂度时间复杂度全称为渐进时间复杂度,并不是用来描述该算法的实现实际的执行时间,而是一种描述算法执行时间与数据规模之间的增长关系。 使用大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 实验室设备网 版权所有 |