路飞学城Python-Day171

Evernote Export

线性结构:
python的列表操作
列表是如何存储的:顺序存储的,是一块连续的内存,内存是一堆格子,列表是一串连续的编号
32位机器上一个整数占4个字节
数组和列表有2点不同,1.数组的元素类型要求是相同的;2.数组长度固定
列表:1.python中列表的元素类型可以不同(python列表中存储的不是数值而是地址);2.python列表会根据输入的长度自动根据序列来递增列表
列表的append时间复杂度是O(1)
列表的插入和删除的时间复杂度是O(n)
栈的结构:
栈是一个数据集合,可以理解为只能在一端插入或进行删除操作的列表
栈的特点:后进先出LIFO(last in first out)
栈的概念:栈顶、栈底
栈的基本操作:
    进栈(压栈):push
    出栈:pop
    取栈顶:gettop
栈的应用
括号匹配问题:给一个字符串,其中包括小括号、中括号、大括号、求该字符串中的括号是否匹配
队列
队列是一个数据集合,仅允许在列表的一端进行插入,另一端进行删除
进行插入的一端称为队尾(rear),插入动作称为进队或入队
进行删除的一端称为队头(front),删除动作称为出队
队列的性质:先进先出(First-in, First-out)
迷宫的两种方式
栈-深度优先搜索
思路:从一个节点开始,任意找下一个能走的点,当找不到能走的点,退回上一个点寻找是否有其他方向的点
使用栈存储当前路径
队列-广度优先搜索
思路:从一个节点开始,寻找所有接下来能继续走的点,继续寻找,直到找到出口
使用队列存储当前正在考虑的节点
链表
链表是一种线性数据结构,链表是由一系列节点组成的元素集合。
每个节点包含两个部分,数据域item和指向下一个节点的指针next。通过节点之间的相互连接,最终串联成一个链表。
创建链表:
    头插法
    尾插法
复杂度分析
按元素值查找O(n)
按下标查找O(n)
在某一元素中插入O(1)
删除元素O(1)
链表在插入和删除的操作上明显快于顺序表
链表的内存快于灵活的分配:试利用链表重新实现栈和队列
链表这种链式存储的数据结构对树和图的结构有很大的启发性
哈希表(散列表)
哈希表通过哈希函数来计算数据存储位置的数据结构,通常支持一下操作
insert(key,value):插入键值对(key,value)
get(key):如果存在键为key的键值则返回其value,否则返回空值
delete(key):删除key的键值对
直接寻址表
当关键字的全域U比较小时,直接寻址是一种简单而有效的方法
直接寻址的技术缺点:
当域U很大时,需要消耗大量内存,很不实际
如果域U很大而实际出现的key很少,则大量空间被浪费
无法处理关键字不是数字的情况
哈希表,是一种线性表的存储结构。哈希表由一个直接寻址表和一个哈希函数组成,哈希函数h(k)将元素关键字k作为自变量,返回元素的存储下标
假设有一个长度为7的哈希表,哈希函数h(k) = k%7,元素集合{14,22,3,5}的存储方式如下图
哈希冲突
由于哈希的大小是有限的,而要存储的值的总数量是无限的,因此对于任何哈希函数,都会出现两个不同的值但是映射到同个位置上的情况,这种情况称为哈希冲突
解决哈希冲突方法
1.开放寻址法:如果哈希函数返回的位置已经有值,则可以向后探查新的位置来存储这个值
线性查探:如果位置被占用,则探查i+1,i+2...
二次查探:如果位置i被占用,则探查i+1^2,i-1^2,i+2^2,i-2^2
二度哈希:有n个哈希函数,当使用第一个哈希函数h1发生冲突时,则尝试使用 h2,h3...
2.拉链法:哈希表每个位置都连接一个链表,当冲突发生时,冲突的元素将被加到该位置链表的最后
树与二叉树
树是一种结构,比如目录结构
树是一种可以递归定义的数据结构
树是由n个节点组成的集合
    如果n=0,那这是一颗空树
    如果n>0,那存在1个节点作为树的根节点,其他节点可以分为m个集合,每个集合本身又是一棵树
二叉搜索树
二叉搜索树是一颗二叉树且满足性质:设x是二叉树的一个节点。如果y是x左子树的一个节点,那么y.key<=x.key
如果y是x右子树的一个节点,那么y.key>=x.key
二叉搜索树的操作:查询、插入、删除
 
 
 
 
 
 
 
 
 
 
 
 
 

 

转载于:https://www.cnblogs.com/pandaboy1123/p/10098961.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS 2面世!是没有退路还是时机成熟?中国操作系统崛起元年或已到来

来源&#xff1a;21Tech(News-21)作者&#xff1a;倪雨晴编辑&#xff1a;张星6月2日晚间&#xff0c;华为鸿蒙操作系统HarmonyOS迎来重要时刻&#xff0c;华为正式发布多款搭载HarmonyOS 2的新产品&#xff0c;包括HUAWEI Mate 40系列新版本、Mate X2新版本、HUAWEI WATCH 3系…

操作系统:线程同步

操作系统&#xff1a;线程同步 使用Linux无名信号量实现了读写者线程的互斥和同步。 实验环境 环境&#xff1a;Linux语言&#xff1a;CCMake&#xff1a;3.17.1GCC&#xff1a;7.5.0IDE&#xff1a;Clion 2020.3.1 实验目标 理解进程同步的两种制约关系&#xff1a;互斥与…

python201811210作业4

5. 尝试实现一个管理系统通讯录管理系统 1.增加姓名和手机 2.删除姓名 3.修改手机 4.查询所有用户 5.根据姓名查找手机号 6.退出5. 随机产生密码&#xff1a;在26个大小写字母和10个数字组成的列表中&#xff0c;随机生成10个8位密码1.通过代码实现如下转换&#xff1a;• 二进…

中国工程院2021年院士增选第二轮候选人名单公布

来源&#xff1a;先进制造业中国工程院2021年院士增选进入第二轮评审候选人名单&#xff08;按候选人姓名拼音排序&#xff09;未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城…

vsftpd部署流程和常见问题详解

vsftpd部署流程和常见问题详解 ⭐️ 网上关于在云服务器里配置vsftpd的文章鱼龙混杂&#xff0c;没有一篇是可以彻底解决问题的&#xff0c;有些问题虽简单&#xff0c;但也让初学者感到困惑。本文详细说明vsftpd的部署流程和一些常见问题的解决方法&#xff0c;详述用户创建过…

洛谷 1341 无序字母对

欧拉路的裸题&#xff1f;&#xff1f;&#xff1f; 1 #include <algorithm>2 #include <iostream>3 #include <cstring>4 #include <cstdio>5 6 using namespace std;7 8 const int N 3550;9 10 int e[N][N], fir[4], a[N], m, tot, v[N], id[N], f…

谷歌发布史上最强人类大脑「地图」,1.3亿个突触,在线可视3D神经元「森林」!...

来源&#xff1a;Google AI Blog编辑&#xff1a;yaxin, LQ &#xff08;新智元&#xff09;突触&#xff0c;是神经网络的「桥梁」。我们知道&#xff0c;人类大脑有860亿个神经元&#xff0c;因为有了突触&#xff0c;才可以把神经元上的电信号传递到下一个神经元。长久以来&…

智慧食堂项目策划书(商业计划书/立项计划)

金鹰物联智慧食堂项目策划书&#xff08;商业计划书/立项计划&#xff09; ©️ 金鹰物联项目组&#xff0c;转载请注明出处&#xff01; ⭐️ 技术部分请参考博文&#xff1a;基于YOLOv5的中式快餐店菜品识别系统 文章目录金鹰物联智慧食堂项目策划书&#xff08;商业计划…

pipelineDB学习笔记-2. Stream (流)

一、流的定义&#xff1a; 所谓的“流”&#xff08;stream&#xff09;在pipelineDB中是指那些被允许的数据库客服端推送到 Continuous View&#xff08;连续视图&#xff09; 的时序化数据的一种“抽象”。流中的每一个raw(数据列)或者event(事件)&#xff0c;看起来是和普通…

银行家算法之Python实现[操作系统实验]

银行家算法 银行家算法是著名的死锁避免算法&#xff0c;其思想是&#xff1a;把操作系统视为银行家&#xff0c;操作系统管理的资源相当于银行家管理的资金&#xff0c;进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源。进程…

城市智能化发展中,AI公司应该做什么?

来源&#xff1a;虎嗅APP题图来源:视觉中国在上海长宁区的部分区域&#xff0c;你会发现共享单车总是能够整整齐齐的排列&#xff0c;并且在每一个你需要的街道路边&#xff0c;都能找到空闲的单车&#xff0c;既不会车辆爆满&#xff0c;也不会无车可骑。这些城市细微之处的体…

getchar(),putchar()用法

1.getchar函数可以接收用户输入的多个字符&#xff0c;只用等用户按下回车键后&#xff0c;getchar()函数才会从键盘缓冲区依次读出字符&#xff1b; 2.getchar()和putchar()结合使用&#xff0c;可以将读取的字符输出到屏幕&#xff1b; 3.函数原型&#xff1a; int getchar…

[操作系统]页面置换算法实验及C++实现(OPT、FIFO、LRU)

虚拟内存页面置换算法实验&#xff08;OPT、FIFO、LRU&#xff09; 进程运行时&#xff0c;若其访问的页面不再内存中而需将其调入&#xff0c;但内存已无空闲空间时&#xff0c;就需要从内存中调出一页程序或数据&#xff0c;送入磁盘的对换区。选择调出页面的算法就称为页面…

智谱AI多项成果惊艳亮相2021北京智源大会

来源&#xff1a;学术头条2021 年 6 月 1 日&#xff0c;由北京智源人工智能研究院&#xff08;以下简称 “智源”&#xff09;主办的 2021 北京智源大会在北京中关村国家自主创新示范区会议中心成功开幕。包括 Yoshua Bengio、David Patterson 等图灵奖获得者在内的两百余位国…

python-字典方法

1.字典的格式化字符串在转换说明符%后面加上键(圆括号括起来)&#xff1b;phonebook{"A":45,"B":"56"} s"As phone number is %(A)s." print(s%phonebook) 运行结果&#xff1a; #字典方法&#xff1a; #clear():清楚字典中的所有的项…

js常用随手记

1. 判断是否是空对象 let myObject{} Object.keys(myObject).length // 0 2. void 0 代替 undefined undefined 不是保留字&#xff0c;在局部作用域下能被重写&#xff0c;因此在 val undefined 是有风险的 并且代替后有以下优点&#xff1a; void 0 占用字节更少void 0 更安…

2020-2021学年(2)操作系统考试重点[华侨大学]

2020-2021学年(2)操作系统考试重点 名词解释 操作系统&#xff1a;操作系统是程序的集合&#xff0c;负责控制和管理软硬件资源&#xff0c;并实现作业调度分时系统&#xff1a;&#xff08;分时性&#xff09;宏观上&#xff0c;多个用户同时工作&#xff0c;共享系统资源。…

获得诺贝尔奖的底层小职员 | 从来没有一个高手,是在一夜之间强大起来的

来源&#xff1a;Pinterest优选2019年初NHK的一个访谈纪录片&#xff0c;看哭了很多网友。“感动&#xff0c;这才是真正的大神啊&#xff01;”纪录片的主人公&#xff0c;是2002年的诺贝尔化学奖得主——田中耕一。十九年前&#xff0c;他的获奖几乎是“都市传说”般的爆炸新…

python-循环语句基础知识

#循环语句 x1 while x<100:print(x)x1 name while not name:nameinput("input name:")namename.strip()#删除空格&#xff0c;制表&#xff0c;换行符print(name)w[A,"B",C,D] for i in w:print(i)#内建函数&#xff1a;range()包含下限&#xff0c;不包…

bzoj3160: 万径人踪灭

数组开小gg fft乱搞就可以了。 #include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> using namespace std; typedef long long LL; const LL mod1e97; const double piacos(-…