高级数据结构

优先队列

特点:保证每次取出的元素是队列中优先级别最好的,优先级别可自定义。
常用场景:从杂乱无章的数据中按照一定的顺序(优先级)逐步的筛选出部分乃至全部的数据,例如任意一个数组,找出前K大的数。
性质:
1.数组里的第一个元素 array[0] 拥有最高的优先级别。

2. 给定一个下标 i,那么对于元素 array[i] 而言:
它的父节点所对应的元素下标是 (i-1)/2
它的左孩子所对应的元素下标是 2×i + 1
它的右孩子所对应的元素下标是 2×i + 2
3.数组里每个元素的优先级别都要高于它两个孩子的优先级别。
基本操作:向上筛选,向下筛选。
时间复杂度:O(logN)

图可以说是所有数据结构里面知识点最丰富的一个,最基本的知识点如下。

  • 阶(Order)、度:出度(Out-Degree)、入度(In-Degree)
  • 树(Tree)、森林(Forest)、环(Loop)
  • 有向图(Directed Graph)、无向图(Undirected Graph)、完全有向图、完全无向图
  • 连通图(ConnectedGraph)、连通分量(Connected Component)
  • 存储和表达方式:邻接矩阵(Adjacency
    Matrix)、邻接链表(Adjacency List)
    需要掌握的知识点:
  • 图的存储和表达方式:邻接矩阵(Adjacency Matrix)、邻接链表(Adjacency List)
  • 图的遍历:深度优先、广度优先(较为重要)
  • 二部图的检测(Bipartite)、树的检测、环的检测:有向图、无向图
  • 拓扑排序
  • 联合-查找算法(Union-Find)
  • 最短路径:Dijkstra、Bellman-Ford(区分特点,哪种场合用哪种方法)

前缀树(字典树)

性质:
1.每个节点至少包含两个基本属性。
 children:数组或者集合,罗列出每个分支当中包含的所有字符
 isEnd:布尔值,表示该节点是否为某字符串的结尾
2.前缀树的根节点是空的
所谓空,即只利用到这个节点的 children 属性,即只关心在这个字典里,有哪些打头的字符。
3. 除了根节点,其他所有节点都有可能是单词的结尾,叶子节点一定都是单词的结尾。
基本操作:创建和搜索

线段树

书写较为繁琐,需要不断练习

树状数组

特点:

  1. 它是利用数组来表示多叉树的结构,在这一点上和优先队列有些类似,只不过,优先队列是用数组来表示完全二叉树,而树状数组是多叉树。
  2. 树状数组的第一个元素是空节点。
  3. 如果节点 tree[y] 是 tree[x] 的父节点,那么需要满足条件:y = x - (x & (-x))。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python高级数据结构指的是在Python编程语言中,用来组织和存储数据的复杂数据结构类型。这些数据结构在处理和管理数据时提供了更高级、更灵活的功能和方法。 1. 元组(Tuple)是Python的不可变序列类型,用于存储多个元素。与列表不同,元组的元素不能被修改,因此在一些需要保护数据不被意外更改的情况下使用。元组可以使用索引和切片操作访问其中的元素。 2. 列表(List)是Python最常用的数据结构之一,用于存储有序的元素集合。列表可以包含多种类型的元素,并且可以进行动态修改,如添加、删除、修改元素,以及切片操作和排序等。列表是非常灵活和常用的数据结构。 3. 字典(Dictionary)是Python中的键值对数据结构,用于存储无序的数据集合。字典是可变且无序的,每个元素由一个键和一个值组成,通过键来访问值。字典的主要特点是可以高效地根据键来查找和修改值。 4. 集合(Set)是Python中的另一种常用数据结构,用于存储无序且不重复的元素集合。集合可以进行集合运算(如并集、交集、差集等)和成员关系测试,还具有高效的元素查找和添加功能。 5. 堆(Heap)是一种特殊的优先队列,它具有优先级特性,其中优先级最高的元素始终位于堆顶。Python中的heapq模块提供了堆的实现,可以用于解决一些需要按优先级处理的问题。 6. 队列(Queue)是一种按照先进先出(FIFO)原则管理元素的数据结构。Python的queue模块提供了多种队列实现,如普通队列、优先级队列和循环队列,可以满足不同场景下的需求。 除了以上提到的高级数据结构,Python还提供了其他一些数据结构,如栈、字节数组和命名元组等。这些高级数据结构的存在使得Python开发者能够更加灵活和高效地处理各种复杂的数据操作和存储需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值