算法和数据结构
Vosky
生命不息,折腾不止
展开
-
《 常见算法与数据结构》平衡查找树(1)—— 2-3查找树(附动画)
我们上回说到二叉查找树已经很接近我们的目标了,在很多情况下性能都很不错,但是唯独在删除上不行,一旦删除操作做多了就会失去平衡,那么,这回,我们来说说如何做一个平衡查找树,首先介绍一下2-3查找树2-3树介绍2-3树是一种特殊的二叉树,它允许一个节点中出现2个key。2节点:1个key,2个孩子3节点,2个key,3个孩子它有几个特性:符合中序遍历的顺序:左孩小于最左key,中间孩子在左右k原创 2016-05-25 10:45:16 · 4401 阅读 · 2 评论 -
《常见算法和数据结构》元素排序(5)——归并排序
本系列文章主要介绍常用的算法和数据结构的知识,记录的是《Algorithms I/II》课程的内容,采用的是“算法(第4版)”这本红宝书作为学习教材的,语言是java。这本书的名气我不用多说吧?豆瓣评分9.4,我自己也认为是极好的学习算法的书籍。通过这系列文章,可以加深对数据结构和基本算法的理解(个人认为比学校讲的清晰多了),并加深对java的理解。原创 2016-09-09 20:25:32 · 1165 阅读 · 0 评论 -
《 常见算法与数据结构》符号表ST(4)——二叉查找树删除 (附动画)
符号表ST(4)——二叉查找树删除 (附动画) 本系列文章主要介绍常用的算法和数据结构的知识,记录的是《Algorithms I/II》课程的内容,采用的是“算法(第4版)”这本红宝书作为学习教材的,语言是java。这本书的名气我不用多说吧?豆瓣评分9.4,我自己也认为是极好的学习算法的书籍。 通过这系列文章,可以加深对数据结构和基本算法的理解(个人认为比学校讲的清晰多了),并加深对原创 2016-05-14 19:31:19 · 2090 阅读 · 0 评论 -
《 常见算法与数据结构》符号表ST(3)——二叉查找树 (附动画)
符号表(3)——二叉查找树 本系列文章主要介绍常用的算法和数据结构的知识,记录的是《Algorithms I/II》课程的内容,采用的是“算法(第4版)”这本红宝书作为学习教材的,语言是java。这本书的名气我不用多说吧?豆瓣评分9.4,我自己也认为是极好的学习算法的书籍。 通过这系列文章,可以加深对数据结构和基本算法的理解(个人认为比学校讲的清晰多了),并加深对java的理解。符号表原创 2016-05-14 18:06:44 · 5836 阅读 · 0 评论 -
《 常见算法与数据结构》符号表ST(2)——初等实现分析和有序符号表
符号表(Symbol Table) 本系列文章主要介绍常用的算法和数据结构的知识,记录的是《Algorithms I/II》课程的内容,采用的是“算法(第4版)”这本红宝书作为学习教材的,语言是java。这本书的名气我不用多说吧?豆瓣评分9.4,我自己也认为是极好的学习算法的书籍。 通过这系列文章,可以加深对数据结构和基本算法的理解(个人认为比学校讲的清晰多了),并加深对jav原创 2016-05-14 16:36:55 · 2398 阅读 · 0 评论 -
《常见算法和数据结构》优先队列(2)——二叉堆
1.二叉堆1.1二叉堆的定义堆是一个完全二叉树结构(除了最底下一层,其他层全是完全平衡的),如果每个结点都大于它的两个孩子,那么这个堆是有序的。 二叉堆是一组能够用堆有序的完全二叉树排序的元素,并在数组中按照层级存储(不用数组的第一个位置) 1.2二叉堆的性质 最大的元素在a[1] (root结点)每个k的父亲在k/2每个k的孩子在k*2和k*2+11.3二叉堆的操作1.3原创 2016-04-28 21:27:32 · 4721 阅读 · 0 评论 -
《常见算法和数据结构》元素排序(3)——洗牌算法
洗牌算法的思想很简单,就是像洗扑克牌一样,对一组数据进行随机打乱,这个算法在很多应用里都非常有用,特别是对于后面需要介绍的快排来说,这个算法直接影响了快排的效率。原创 2016-04-06 23:16:29 · 1253 阅读 · 0 评论 -
《常见算法和数据结构》元素排序(4)——凸包问题
元素排序(4)——凸包问题 本系列文章主要介绍常用的算法和数据结构的知识,记录的是《Algorithms I/II》课程的内容,采用的是“算法(第4版)”这本红宝书作为学习教材的,语言是java。通过这系列文章,可以加深对数据结构和基本算法的理解,并加深对java的理解。原创 2016-04-06 23:27:22 · 1448 阅读 · 0 评论 -
《常见算法和数据结构》元素排序(2)——希尔排序(动画)
元素排序(2)——希尔排序 本系列文章主要介绍常用的算法和数据结构的知识,记录的是《Algorithms I/II》课程的内容,采用的是“算法(第4版)”这本红宝书作为学习教材,通过这系列文章,可以加深对数据结构和基本算法的理解,并加深对java的理解。原创 2016-04-06 22:58:38 · 3137 阅读 · 0 评论 -
《常见算法和数据结构》元素排序(1)——简单排序(附动画)
元素排序(1)——简单排序 本系列文章主要介绍常用的算法和数据结构的知识,记录的是《Algorithms I/II》课程的内容,采用的是“算法(第4版)”这本红宝书作为学习教材,通过这系列文章,可以加深对数据结构和基本算法的理解,并加深对java的理解。原创 2016-04-06 21:58:25 · 1523 阅读 · 0 评论 -
《常见算法和数据结构》优先队列(3)——堆排序
堆排序1堆排序思想堆排序的思想很简单,就是利用了堆的优点,不断的找最大值,然后删除最大值,重复操作。 - 首先,要构造一个二叉堆出来,我们采用自底向上的思想。 做删除root的操作(但是不是真删除,只是把root元素放到最后了) 循环直到数组有序。我们可以发现加入的代码非常少!!3.2堆排序代码public class Heap{ public static void sort(Comp原创 2016-04-28 21:40:01 · 766 阅读 · 0 评论 -
《常见算法和数据结构》优先队列(1)——API和初等实现
1.优先队列的API和初等实现做一个总结: 栈 :先进后出 队列 :先进先出 随机队列 : 随机出 优先队列:每次出来的是最大值或最小值1.1优先队列的API优先队列在很多场合都有用, 比如:在大量数据里,如果取前M大的数据(存储不足以存下如此大规模数据),就可以用优先队列(MinPQ来做,类似MaxPQ,只是每次删除最小值)——一直保证队列中只有M个比较大的数据,每次删除原创 2016-04-28 21:24:41 · 1092 阅读 · 0 评论 -
《 常见算法与数据结构》符号表ST(1)——基本介绍
符号表(Symbol Table) 这次该介绍符号表(Symbol Table)了,这可是个很有用的数据结构 本系列文章主要介绍常用的算法和数据结构的知识,记录的是《Algorithms I/II》课程的内容,采用的是“算法(第4版)”这本红宝书作为学习教材的,通过这系列文章,可以加深对数据结构和基本算法的理解,并加深对java的理解原创 2016-05-14 15:10:19 · 11268 阅读 · 1 评论 -
《 常见算法与数据结构》平衡查找树(2)——红黑树(附动画)
红黑树介绍 红黑树是一种简单的实现2-3树的数据结构,它方便的把我们之前实现的二叉搜索树改造成了一棵2-3树。它的核心思想是用一条左倾链(红链)作为“胶水”把二叉树的两个节点给粘起来,形成一个3节点。把红链看成水平的,看是不是和2-3树就一样了BST改造成红黑树有一些约定: - 每个节点最多只有一个红链与之相连(连父亲和孩子) - 每条从root到null的路径,都是同样的黑链数(绝对黑平原创 2016-05-25 10:52:58 · 7311 阅读 · 2 评论 -
《常见算法和数据结构》元素排序(6)——重头戏:快速排序
快速排序是20世纪Top10算法之一。足以看出它的重要性。并且它不需要额外的空间,这是它比MergeSort厉害的地方。原创 2016-09-14 14:22:48 · 1257 阅读 · 0 评论