一 算法的概念
1.1算法是独立存在的一种解决问题的方法和思想.

1.2 算法可以有不同的语言描述实现版本(如C描述、C++描述、Python描述等),我们现在是在用Python语言进行描述实现。

二 算法的五大特性
输入: 算法具有0个或多个输入
输出: 算法至少有1个或多个输出
有穷性: 算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在可接受的时间内完成
**确定性:**算法中的每一步都有确定的含义,不会出现二义性
**可行性:**算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成

三 时间复杂度
3.1概念
时间复杂度: 算法的时间复杂度是一个函数,它定性描述该算法的运行时间. 这是一个代表算法输入值的字符串的长度的函数. 时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数.使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况.

3.2 时间复杂度的6条基本计算规则
1 基本操作,即只有常数项 简单来说:没有数量规模,就执行一次 时间复杂度:O(1)

2 顺序结构,时间复杂度按加法进行计算 简单来说:一步一步的执行下去,类似上面的方法二 时间复杂度:O(n)

3 循环结构,时间复杂度按乘法进行计算 简单循环:就是批量执行多次,类似上面的方法一: 时间复杂度:O(n3)

递归循环:重复同样的动作的重复次数 时间复杂度O(logn)

4 分支结构,时间复杂度取最大值 简单来说:就是多分支if语句,找一个时间最长的作为标准的时间

5 判断一个算法的效率时,往往只需要关注操作数量的最高次项,其它次要项和常数项可以忽略

6 在没有特殊说明时,我们所分析的算法的时间复杂度都是指最坏时间复杂度

四 . 三种时间复杂度
分析算法时,存在几种可能的考虑:

算法完成工作最少需要多少基本操作,即最优时间复杂度
算法完成工作最多需要多少基本操作,即最坏时间复杂度
算法完成工作平均需要多少基本操作,即平均时间复杂度

  对于最优时间复杂度,其价值不大,因为它没有提供什么有用信息,其反映的只是最乐观最理想的情况,没有参考价值。
  对于最坏时间复杂度,提供了一种保证,表明算法在此种程度的基本操作中一定能完成工作。
  对于平均时间复杂度,是对算法的一个全面评价,因此它完整全面的反映了这个算法的性质。但另一方面,这种衡量并没有保证,不是每个计算都能在这个基本操作内完成。而且,对于平均情况的计算,也会因为应用算法的实例分布可能并不均匀而难以计算。

因此,我们主要关注算法的最坏情况,亦即最坏时间复杂度

算法简介

五 空间复杂度
空间复杂度(SpaceComplexity)是对一个算法在运行过程中临时占用存储空间大小的量度。

注意:
一般情况下,代码量少的情况下,不需要考虑空间复杂度,而代码量非常大的时候,才会考虑到空间复杂度。 空间复杂度其实就是用空间换时间。 简单来说:同样一件事情,一个人干和多个人干,通过人数量增加换取时间的降低 算法的时间复杂度和空间复杂度合称为算法的复杂度。

六 数据结构
6.1概念
数据结构指数据对象中数据元素之间的关系

6.2分类

6.2.1可以划分为内置数据结构和扩展数据结构
Python的内置数据结构
:系统自己定义好的,不需要我们自己去定义的数据结构。(比如列表、元组、字典)
Python的扩展数据结构:Python系统里面没有直接定义,需要我们自己去定义实现这些数据的组织方式。 (栈,队列)

6.2.2也可以划分为线性结构和非线性结构
线性结构:表中各个节点具有线性关系
非线性结构:表中各个节点之间具有多个对应关系
算法简介

6.3抽象数据类型(Abstract Data Type)
抽象数据类型(ADT)的含义是指一个数学模型以及定义在此数学模型上的一组操作。即把数据类型和数据类型上的运算捆在一起,进行封装。

最常用的数据运算有五种:

插入
删除
修改
查找
排序

相关文章:

  • 2021-11-06
  • 2021-10-15
  • 2021-06-05
  • 2021-07-13
  • 2021-04-04
  • 2021-06-14
  • 2021-09-10
猜你喜欢
  • 2021-04-20
  • 2021-11-15
  • 2021-11-30
  • 2021-12-15
  • 2021-09-12
  • 2021-09-05
  • 2021-10-30
相关资源
相似解决方案