| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数据结构详解 -> 正文阅读 |
|
[数据结构与算法]数据结构详解 |
文章目录线性表线性表的顺序表示静态分配
动态分配
线性表的链式表示单链表
双链表
循环单链表
循环双链表
静态链表
栈 (stack)栈是特殊的线性表:只允许在一端进行插入或删除操作, 其逻辑结构与普通线性表相同 栈的顺序存储
栈的链式存储结构
应用
队列(Queue)
循环队列(判满)方案一: 牺牲一个单元来区分队空和队满 队尾指针的再下一个位置就是队头,即
方案二: 不牺牲存储空间,设置size 定义一个变量 队满条件: 队空条件: 方案三: 不牺牲存储空间,设置tag
每次删除操作成功时,都令tag = 0;只有删除操作,才可能导致队空;
队列的链式存储结构
双端队列
串顺序表
堆分配
链式存储
树顺序存储
链式存储
计算机科学中的树
二叉查找树中序有序 笛卡尔树范围最值查询与最低公共祖先( 距离两个节点最近的共同祖先 )
AVL树本质上还是一棵二叉搜索树,它的特点是: 1.本身首先是一棵二叉搜索树。 2.带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1。 也就是说,AVL树,本质上是带了平衡功能的二叉查找树(二叉排序树,二叉搜索树)。 红黑树是一种特化的AVL树 , 它可以在O(log n)时间内做查找,插入和删除 在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求: 性质1. 结点是红色或黑色。 性质2. 根结点是黑色。 性质3. 所有叶子都是黑色。(叶子是NIL结点) 性质4. 每个红色结点的两个子结点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色结点) 性质5. 从任一节结点其每个叶子的所有路径都包含相同数目的黑色结点。 这些约束强制了红黑树的关键性质: 从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。 结果是这个树大致上是平衡的。因为操作比如插入、删除和查找某个值的最坏情况时间都要求与树的高度成比例。 这个在高度上的理论上限允许红黑树在最坏情况下都是高效的,而不同于普通的二叉查找树。
B树(B-)而B-树查询时间复杂度不固定,与 key 在树中的位置有关,最好为O(1)。 B-树,这里的 B 表示 balance( 平衡的意思),B-树是一种多路自平衡的搜索树 B-树有如下特点:
B+ 树时间复杂度固定为 log n
算法
冒泡排序
选择排序每遍历一次列表只交换一次数据将它换到正确的位置 。 一共需要 n-1 次遍历来排好 n 个数据 。 插入排序每一个新的数据项被 插入到前边的子表里 希尔排序缩小间隔排序 它以插入排序为基础,将原来要排序的列表划分为一些子列表,再对每一个子列表执行插入排序 。 归并排序把两个排序好了的列表结合在一起组合成一个单一的有序的新列表 归并排序是一种递归算法,它持续地将一个列表分成两半 如果列表是空的或者 只有一个元素,那么根据定义,它就被排序好了(最基本的情况 ) 如果列表里的元素超过一个,我们就把列表拆分,然后分别对两个部分调用递归排序。 快速排序基数排序堆排序参考链接 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 17:35:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |