算法
算法是解决问题的方法和思想。
算法复杂度
对于算法的时间性质和空间性质,最重要的是其数量级和趋势.可以认为3n23n23n^2和1000n21000n21000n^2,都是n2n2n^2级

算法完成工作最少需要多少基本操作,即最优时间复杂度
算法完成工作最多需要多少基本操作,即最坏时间复杂度
无特殊说明时,算法的时间复杂度都是指最坏时间复杂度

基本操作,即只有常数项,认为其时间复杂度为O(1)
顺序结构,时间复杂度按加法进行计算
循环结构,时间复杂度按乘法进行计算
分支结构,时间复杂度取最大值

例子

如果 a+b+c=1000,且a2+b2=c2a2+b2=c2 a^2+b^2=c^2(a,b,c 为自然数),求abc所有可能组合
算法1:

for a in range(0, 1001):  # 执行n次for b in range(0, 1001):  # 执行n次for c in range(0, 1001):  # 执行 n次if a**2 + b**2 == c**2 and a+b+c == 1000:print("a, b, c: %d, %d, %d" % (a, b, c))

算法复杂度为T(n)=O(n∗n∗n)=O(n3)T(n)=O(n∗n∗n)=O(n3)T(n) = O(n*n*n) =O(n^3)

算法2:

for a in range(0, 1001):  # 执行n次for b in range(0, 1001):  # 执行n次c = 1000 - a - bif a**2 + b**2 == c**2:print("a, b, c: %d, %d, %d" % (a, b, c))

算法复杂度为T(n)=O(n∗n∗(1+1))=O(n2)T(n)=O(n∗n∗(1+1))=O(n2)T(n) = O(n*n*(1+1)) =O(n^2)

import matplotlib.pyplot as plt
from math import log
n=11
x = [i for i in range(1,n)]
O1 = [1 for i in range(1,n)]
Ologn = [log(i,2) for i in range(1,n)]
On = [i for i in range(1,n)]
Onlogn = [i*log(i,2) for i in range(1,n)]
On2 = [i*i for i in range(1,n)]
On3 = [i*i*i for i in range(1,n)]plt.plot(x,O1,label="1")
plt.plot(x,Ologn,label="logn")
plt.plot(x,On,label="n")
plt.plot(x,Onlogn,label="nlogn")
plt.plot(x,On2,label="n^2")
plt.plot(x,On3,label="n^3")
plt.legend()

数据结构
在python中list和dict都是一种数据结构.在list查询一个值需要的时间复杂度是O(n),而在dict里查询一个值的时间复杂则为O(1).
数据存储方式不同会导致需要不同的算法进行处理,我们希望算法解决问题的效率越快越好,玉石就要研究数据应该如何保存,这就是数据结构

python 数据结构 基础相关推荐

  1. python数据结构基础(单链表,多链表,二叉树)

    python数据结构基础(单链表,多链表,二叉树) 数据结构指数据对象中数据元素之间的关系 Python 给我们提供了很多现成的数据结构类型,这些系统自己定义好的,不需要我们自己去定义的数据结构叫做 ...

  2. python数据结构基础知识点二分查找

    a=[2,7,1,3,5,8,3,6,7,15,34] for i in range(len(a)-1):for j in range(i+1,len(a)):if a[i]>a[j]:a[i] ...

  3. 【Python基础入门系列】第07天:Python 数据结构--序列

    python内置序列类型最常见的是列表,元组和字符串.(序列是python中最基础的数据结构,而数据结构是计算机存储,组织数据的方式.) 另外还提供了字典和集合的数据结构,但他们属于无顺序的数据集合体 ...

  4. Python数据结构与算法(1.5)——Python基础之函数与异常

    Python数据结构与算法(1.5)--Python基础之函数与异常 0. 学习目标 1. 函数 1.1 自定义函数 1.2 函数与参数 1.3 函数与返回值 2. 异常处理 2.1 raise 语句 ...

  5. Python数据结构与算法(1.4)——Python基础之控制结构

    Python数据结构与算法(1.4)--Python基础之控制结构 0. 学习目标 1. 代码块与缩进 2. 条件语句 2.1 if 语句 2.2 if 语句的嵌套 2.3 断言 3. 循环 3.1 ...

  6. Python数据结构与算法(1.3)——Python基础之输入、输出与高阶赋值

    Python数据结构与算法(1.3)--Python基础之输入.输出与高阶赋值 0. 学习目标 1. 输入.输出与注释 1.1 获取用户输入 1.2 格式化输出 1.2.1 基本方法 1.2.2 fo ...

  7. Python数据结构与算法(1.2)——Python基础之变量与内置数据类型

    Python数据结构与算法(1.2)--Python基础之变量与内置数据类型 0. 学习目标 1. Python 程序的运行 1.1 Python 交互式解释器 1.2 Python 程序脚本 2. ...

  8. Python数据结构与算法(1.6)——Python基础之类与模块化

    Python数据结构与算法(1.6)--Python基础之类与模块化 0. 学习目标 1. 面向对象编程:类 1.1 面向对象编程的基本概念 1.1.1 多态 1.1.2 封装 1.1.3 继承 1. ...

  9. python数据分析基础 余本国_Python数据分析基础

    本书根据作者多年教学经验编写, 条理清楚, 内容深浅适中, 尽量让读者从实例出发, 结合课后练习, 少走弯路.本书涉及的内容主要包括Python数据类型与运算.流程控制及函数与类.Pandas库的数据 ...

最新文章

  1. 医工汇聚 智竞心电 | 首届中国心电智能大赛开启招募
  2. java html 字符串截取字符串长度_Java截取带html标签的字符串,再把标签补全(保证页面显示效果)...
  3. 人们对大数据的几点误解
  4. Self Crossing
  5. windows 的 wsl 命令
  6. 使用Express开发小说API接口服务1.0(二)
  7. spring cloud微服务之间调用Feign
  8. 信息技术是一把双刃剑,如何掌控好这柄剑?
  9. mybatis逆向工程利用mybatis-generator-core自动生成代码
  10. spring 的web.xml的加载顺序
  11. 用matlab做bp神经网络预测,matlab人工神经网络预测
  12. Visual Studio 2022 WinForm/Wpf打包安装程序
  13. Java入门 J2SE
  14. 最新互联网架构师视频教程+源码20G
  15. warning: #61-D: integer operation result is out of range
  16. 基于学生信息管理系统的数据库系统课程设计升级版(mysql)
  17. Linux:搭建GIT服务,Linux中使用git,git基础命令,和原理
  18. ffmpeg的api里av_free和av_freep的区别
  19. 实现百度下拉菜单实例(利用jsonp跨域请求百度数据接口)
  20. Date类对象与字符串的互相转换

热门文章

  1. 微课|中学生可以这样学Python(1.5节):标准库与扩展库对象的导入
  2. Python使用tkinter的Treeview组件实现表格功能
  3. r语言clind函数_R 语言学习笔记 1
  4. 请求转发和重定向的区别_WEB之重定向和请求转发的区别
  5. python的基本语法if语句_Python基础之条件控制操作示例【if语句】
  6. 图标选择器_【小技巧】巧用CSS属性值正则匹配选择器
  7. thinkphp v5.0.11漏洞_Thinkphp 5.0远程代码执行漏洞
  8. java 调用枚举种方法_Java中枚举类型的一种使用方式
  9. python模拟一个简单的取款机,python简单区块链模拟详解
  10. 华为媒体服务器在哪个文件夹,plex媒体服务器地址