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. 学习EXTJS6(7)基本功能-最常用的表单

    开发过程中关于表单的处理无非: 1.表单和表单元素 2.实现表单验证 3.表单的提交和加载 -------------------------------------- 1.Ext.form.Basi ...

  2. (18)使用模板(thymeleaf-freemarker)【从零开始学Spring Boot】

    整体步骤: (1)            在pom.xml中引入thymeleaf; (2)            如何关闭thymeleaf缓存 (3)            编写模板文件.html ...

  3. Summary of Memory Management Methods

    Summary of Memory Management Methods Table 18-1 summarizes the various memory management methods. If ...

  4. RedisTemplate Api总结

    RedisTemplate 使用总结 最近在做一个项目,考虑到有累计,排行,缓存等功能:而Redis是一个基于内存的数据库,而且提供了 字符串(String), 哈希(Map), 列表(list), ...

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

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

  6. KeyEvent 键码值

    A 至 Z 键与 A – Z 字母的 ASCII 码同样: 值 描写叙述 65 A 键 66 B 键 67 C 键 68 D 键 69 E 键 70 F 键 71 G 键 72 H 键 73 I 键 ...

  7. Codeforces Round #313 (Div. 2) 560D Equivalent Strings(dos)

    D. Equivalent Strings time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  8. Codeforces Round #FF (Div. 2) D. DZY Loves Modification 贪心+优先队列

    链接:http://codeforces.com/problemset/problem/447/D 题意:一个n*m的矩阵.能够进行k次操作,每次操作室对某一行或某一列的的数都减p,获得的得分是这一行 ...

  9. Linux黑洞

    1 什么是Linux黑洞 在Linux系统中,/dev/null是一个虚设的设备.俗称"Linux黑洞". 不论什么对/dev/null的写入都会成功.但数据会消失得无影无踪.没有 ...

  10. 【整合篇】Activiti业务与流程的整合

    对于不管是Activtit还是jbpm来说,业务与流程的整合均类似.启动流程是绑定业务.流程与业务的整合放到动态代理中 [java] view plain copy print" style ...