Python的数据结构+算法_01

  01_算法的一些基本概念

  三个基本概念:问题、问题实例和算法。

  算法的性质有:有穷性、可行性、确定性、有输入和输出、可终止。

  算法设计的概念:从问题出发,通过分析、思考最终得到一个可以解决问题的过程性描述的工作过程。

  常见算法设计模式:枚举法、贪心法、分治法、回溯法(搜索法)、动态规划法、分支界限发。

  “大O记法”:对于单调的整数函数 f,如果存在一个整数函数 g 和实常数 c > 0,使得对于充分大的 n 总有 f(n) ≤ c·g(n),则称函数 g 是 f 的一个渐近函数(忽略常量因子),记为 f(n) = O(g(n))。易知,f(n) = O(g(n)) 在 n 趋向无穷极限下,函数 f 的增长速度受到函数 g 的约束。

  T(n) = O(g(n)),则称O(g(n))为算法的渐近时间复杂度

  S(n) = O(g(n)),则称O(g(n))为算法的空间复杂度

  最常见的渐近复杂度如下:

    O(1) 常量复杂度

    O(log n) 对数复杂度

    O(n) 线性复杂度

    O(n²) 平方复杂度

    O(n³) 立方复杂度

    O(2ⁿ) 指数复杂度

  从变量出发访问其值是常量时间操作,这是在Python中分析程序时间代价的基础。

  引用语义有:Python    值语义有:C语言

  Python语言的实现基于一套精心设计的链接结构。

  算法分析的主要任务就是弄清算法的资源消耗。

  算法分析的最重要作用是作为评价算法的一种标准。

 

  抽象数据类型 ADT(Abstract Data Type)

  抽象数据类型的基本思想是把数据定义为对象集合,只为他们定义可用的合法操作,但不暴露其内部实现的具体细节,无论是其数据的表示细节还是操作的实现细节。当然,使用一种对象,首先需要能构造出这种对象,然后再操作它们。

  数据类型的操作通常分为3类:构造操作、解析操作、变动操作。

  Python中的 str、tuple和frozenset是不可变数据类型;而list、set和dict是可变数据类型。

  在设计或定义抽象数据类型时,要根据情况,决定将其定义为不可变类型还是可变类型。

  定义一个抽象数据类型,目的是要定义一类计算对象,它们具有某些特定的功能,可以在计算中使用。这类对象的功能体现为一组可以对它们使用的。当然,还需要为这个抽象数据类型确定一个类型名。

posted @ 2021-03-08 23:24  爱咋咋地0121  阅读(58)  评论(0)    收藏  举报