![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
ClownWang
如果你想追随梦想,就要心无他念!
展开
-
浅谈算法和数据结构(7):二叉查找树
原文出处: 寒江独钓 qian介绍了符号表的两种实现,无序链表和有序数组,无序链表在插入的时候具有较高的灵活性,而有序数组在查找时具有较高的效率,本文介绍的二叉查找树(Binary Search Tree,BST)这一数据结构综合了以上两种数据结构的优点。二叉查找树具有很高的灵活性,对其优化可以生成平衡二叉树,红黑树等高效的查找和插入数据结构,后文会一一介绍。一 定义转载 2014-11-05 17:57:50 · 374 阅读 · 0 评论 -
浅谈算法和数据结构(9):平衡查找树之红黑树
原文出处: 寒江独钓 前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红黑树(Red-Black Tree)定义红黑树的主要是像是对2-3查找树进行编码,尤其是对转载 2014-11-05 18:11:39 · 319 阅读 · 0 评论 -
浅谈算法和数据结构(3):合并排序
原文出处: 寒江独钓转载 2014-11-05 14:04:35 · 335 阅读 · 0 评论 -
浅谈算法和数据结构(1):栈和队列
原文出处: 寒江独钓 欢迎分享原创到伯乐头条最近晚上在家里看Algorithems,4th Edition,我买的英文版,觉得这本书写的比较浅显易懂,而且“图码并茂”,趁着这次机会打算好好学习做做笔记,这样也会印象深刻,这也是写这一系列文章的原因。另外普林斯顿大学在Coursera 上也有这本书同步的公开课,还有另外一门算法分析课,这门课程的作者也是这本书的作者,两门课都挺不错的。转载 2014-11-05 10:54:18 · 351 阅读 · 0 评论 -
浅谈算法和数据结构(4):快速排序
原文出处: 寒江独钓转载 2014-11-05 14:27:23 · 373 阅读 · 0 评论 -
浅谈算法和数据结构(2):基本排序算法
原文出处: 寒江独钓本篇开始学习排序算法。排序与我们日常生活中息息相关,比如,我们要从电话簿中找到某个联系人首先会按照姓氏排序、买火车票会按照出发时间或者时长排序、买东西会按照销量或者好评度排序、查找文件会按照修改时间排序等等。在计算机程序设计中,排序和查找也是最基本的算法,很多其他的算法都是以排序算法为基础,在一般的数据处理或分析中,通常第一步就是进行排序,比如说二分查找,首先要对数据进转载 2014-11-05 13:57:56 · 314 阅读 · 0 评论 -
浅谈算法和数据结构(11):哈希表
在前面的系列文章中,依次介绍了基于无序列表的s,基于有序数组的二分查找,平衡查找树,以及红黑树,下图是它们在平均以及最差情况下的时间复杂度:可以看到在时间复杂度上,红黑树在平均情况下插入,查找以及删除上都达到了lgN的时间复杂度。那么有没有查找效率更高的数据结构呢,答案就是本文接下来要介绍了散列表,也叫哈希表(Hash Table)什么是哈希表哈希表就是一种转载 2014-11-05 18:18:37 · 331 阅读 · 0 评论 -
浅谈算法和数据结构(8):平衡查找树之2-3树
原文出处: 寒江独钓前面介绍了er'cha(Binary Search Tree),他对于大多数情况下的查找和插入在效率上来说是没有问题的,但是他在最差的情况下效率比较低。本文及后面文章介绍的平衡查找树的数据结构能够保证在最差的情况下也能达到lgN的效率,要实现这一目标我们需要保证树在插入完成之后始终保持平衡状态,这就是平衡查找树(Balanced Search Tree)。在一棵具有N转载 2014-11-05 18:05:57 · 487 阅读 · 0 评论 -
浅谈算法和数据结构(6):符号表及其基本实现
原文出处: 寒江独钓 前面几篇文章介绍了基本的排序算法,排序通常是查找的前奏操作。从本文开始介绍基本的查找算法。在介绍查找算法,首先需要了解符号表这一抽象数据结构,本文首先介绍了什么是符号表,以及这一抽象数据结构的的API,然后介绍了两种简单的符号表的实现方式。一符号表在开始介绍查找算法之前,我们需要定义一个名为符号表(Symbol Table)的抽象数据结构,该数转载 2014-11-05 17:55:16 · 331 阅读 · 0 评论 -
浅谈算法和数据结构(5):优先级队列与堆排序
原文出处: 寒江独钓在很多应用中,我们通常需要按照优先级情况对待处理对象进行处理,比如首先处理优先级最高的对象,然后处理次高的对象。最简单的一个例子就是,在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话。在这种情况下,我们的数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象。这种数据结构就是优先级队列(Priority Queue)转载 2014-11-05 14:33:44 · 452 阅读 · 0 评论 -
浅谈算法和数据结构(12):无向图相关算法基础
原文出处: 寒江独钓 从这篇文章开始介绍图相关的算法,这也是Algorithms在线课程di'er'bu'f的第一次课程笔记。 图的应用很广泛,也有很多非常有用的算法,当然也有很多待解决的问题,根据性质,图可以分为无向图和有向图。本文先介绍无向图,后文再介绍有向图。 之所以要研究图,是因为图在生活中应用比较广泛: 无向图图是若干个顶点(Vertices)和边(Edges)转载 2014-11-05 18:25:24 · 398 阅读 · 0 评论 -
浅谈算法和数据结构(10):平衡查找树之B树
原文出处: 寒江独钓 前面讲解了平衡查找树中的2-3树以及其实现hon。2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key。维基百科对B树的定义为“在计算机科学中,B树(B-tree)是一种树状数据结构,它能够存储数据、对其进行排序并允许以O(log n)的时间复杂度运行进行查找、顺序读取、插入和删除的数据结构。B树,概括来说是一个节点可以拥有多于2个转载 2014-11-05 18:16:54 · 343 阅读 · 0 评论