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
二叉搜索树的操作:查询、插入、删除
 
 
 
 
 
 
 
 
 
 
 
 
 

路飞学城Python-Day171的更多相关文章

  1. 路飞学城—Python爬虫实战密训班 第三章

    路飞学城—Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫: - 定义调度器 - ...

  2. 路飞学城—Python爬虫实战密训班 第二章

    路飞学城—Python爬虫实战密训班 第二章 一.Selenium基础 Selenium是一个第三方模块,可以完全模拟用户在浏览器上操作(相当于在浏览器上点点点). 1.安装 - pip instal ...

  3. 路飞学城Python爬虫课第一章笔记

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 之前看阮一峰的博客文章,介绍到路飞学城爬虫课程限免,看了眼内容还不错,就兴冲冲报了名,99块钱满足以下条件会返还并送书送视频. 缴 ...

  4. 路飞学城-Python开发集训-第3章

    学习心得: 通过这一章的作业,使我对正则表达式的使用直接提升了一个level,虽然作业完成的不怎么样,重复代码有点多,但是收获还是非常大的,有点找到写代码的感觉了,遗憾的是,这次作业交过,这次集训就结 ...

  5. 路飞学城-Python开发集训-第1章

    学习体会: 在参加这次集训之前我自己学过一段时间的Python,看过老男孩的免费视频,自我感觉还行,老师写的代码基本上都能看懂,但是实际呢?....今天是集训第一次交作业的时间,突然发现看似简单升级需 ...

  6. 路飞学城-Python开发集训-第4章

    学习心得: 学习笔记: 在python中一个py文件就是一个模块 模块好处: 1.提高可维护性 2.可重用 3.避免函数名和变量名冲突 模块分为三种: 1.内置标准模块(标准库),查看所有自带和第三方 ...

  7. 路飞学城-Python开发集训-第2章

    学习心得: 这章对编码的讲解超级赞,现在对于编码终于有一点认知了,但还没有大彻大悟,还需要更加细心的琢磨一下Alex博客和视频,以前真的是被编码折磨死了,因为编码的问题而浪费的时间很多很多,现在终于感 ...

  8. 路飞学城-Python开发-第二章

    ''' 数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家' ...

  9. 路飞学城-Python开发-第三章

    # 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...

  10. 路飞学城-Python开发-第一章

    # 基础需求: # 让用户输入用户名密码 # 认证成功后显示欢迎信息 # 输错三次后退出程序 username = 'pandaboy' password = ' def Login(username ...

随机推荐

  1. EurekaLog是什么鬼?

    D的all工程文件打开后,莫名其妙就处于等待打开状态.因为最后一次调整是安装了RO9.0.所以一直怀疑是RO的原因.再加上win7授权问题,安装RO一直不顺当.所以折腾的时间最多. 其他把RO全部卸载 ...

  2. DBMS_SPACE包的使用

    最近有朋友问到了DBMS_SPACE包的使用,也看了一下,大部分是关于dbms_space.space_usage的使用,space_usage这个过程的例子已经很多了,我也就不再多说了,除了这个过程 ...

  3. @Transactional 注解的使用和注意

    转载:http://epine.itpub.net/post/8159/526281 1. 在需要事务管理的地方加@Transactional 注解.@Transactional 注解可以被应用于接口 ...

  4. 洛谷—— P1962 斐波那契数列

    https://www.luogu.org/problem/show?pid=1962 题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f ...

  5. 项目 cmdb(一)

    Django之ModelForm组件 ModelForm    a.  class Meta:            model,                           # 对应Mode ...

  6. Spring MVC-Hello World示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_hello_world_example.htm 说明:示例基于Spring MVC ...

  7. HDU 4511

    SHIT,SHIT,SHIT,SHIT,SHIT... 这道题可以使用AC自动机+DP来解决.也就是用非法路径建立TRIE图,然后从trie[root][1]点开始广搜DP即可.千万要注意一点,题目里 ...

  8. Android Studio怎样删除module

    当你想在Android Studio中删除某个module时,大家习惯性的做法都是选中要删除的module.右键去找delete.可是 在Android Studio中你选中module,右键会发现没 ...

  9. 基于I/O的Server/Client实现

    在前面的文章中讲了基于NIO实现的Server/Client.本文就讲讲基于同步堵塞式I/O实现的Server/Client好与前面的NIO中的Server/Client进行对照. 网络编程中须要解决 ...

  10. friend(hdoj 1719)

    Friend Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...