算法原理
Demon的黑与白
Stay hungry,Stay foolish
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法原理系列:查找
查找该系列我把它们命名为【算法原理】系列,意不在追求【算法细节】,而是从一个宏观的角度来看这些实现,重在数据结构的演变上,及分析它们的算法性能。参考书籍为《算法 第四版》及《算法导论》。基本概念字典是算法当中一个基本且常见的概念,类似于那本将单词的释义按照字母顺序排列起来的历史悠久的参考书。在英语字典里,键就是单词,值就是单词对应的定义、发音和词源。字典有时又叫索引,即书本最后将术语按照字母顺序列出原创 2017-03-27 17:36:36 · 3977 阅读 · 1 评论 -
算法原理系列:2-3查找树
2-3查找树第一次接触它是在刷数据结构那本书时,有它的介绍。而那时候只是单纯的理解它的节点是如何分裂,以及整个构建过程,并不清楚它的实际用处,所以看了也就忘了。而当看完《算法》查找章节时,顿时有种顿悟,喔,原来如此啊。所以,提出来的这些有趣的结构千万不能割裂来看,它的演变如此诱人,细节值得品味。结构缘由首先,搞清楚2-3查找树为什么会出来,它要解决什么样的问题?假设我们对它的基本已经有所了解了。先给原创 2017-03-28 18:31:46 · 13297 阅读 · 3 评论 -
算法原理系列:红黑树
红黑树看了网上关于红黑树的大量教程,发现一个共性,给出定义,适用情况,然后大量篇幅开始讨论它如何旋转,这就一发不可收拾了,各种情况的讨论,插入删除,插入删除,看的云里雾里,好不容易搞清楚,过段时间就给忘了。本文还是着重描述红黑树的诞生过程,尽量理清它背后的设计哲学。思考: 红黑树是如何动态平衡的? 红黑树和23树之间有什么关系? 如果这两个问题已经了然于胸,那可以直接略过此文了。当然,如果还不理解2原创 2017-03-31 18:06:41 · 5072 阅读 · 7 评论 -
算法原理系列:散列表
散列表在刷题的时候散列表用的蛮多,刚好在《算法》查找章节中有它的介绍,就拿过来梳理梳理。之前讲的二分查找也好,二叉搜索树也好都是基于key值的有序性来搜索答案的,而散列表则是一个无序的数据结构。令人神奇的事,无序结构的查找性能能够维持在常数级别。结构缘由在理解散列之前,先来看看最快的键值对查找结构是什么?最原始的数据结构我能想到的就是数组,如int[] nums = {1,2,3,4,5,6};,根原创 2017-04-11 17:37:36 · 821 阅读 · 0 评论 -
算法原理系列:优先队列
算法原理系列:优先队列 第一次总结这种动态的数据结构,一如既往,看了大量的教程,上网搜优先队列原理,能出来一大堆,但不知道为什么怎么这么多人搞不清楚原理和实现的区别?非要把实现讲成原理,今天就说说自己对优先队列的看法吧。 缘由 顾名思义,优先队列是对队列的一种改进,队列为先进先出的一种数据结构,而优先队列则保持一条性质: 在队头的原始始终保持优先级最高。 优先级最高,我们可以原创 2017-05-25 14:51:21 · 3020 阅读 · 0 评论 -
算法原理系列:木桶排序
算法原理系列:木桶排序木桶排序是一种用标记来替代比较操作的排序手段,适用范围较窄,但效率极高,时间复杂度为O(n)O(n),在生活中,我们也经常能看到一些木桶排序的实际案例,比如扑克牌排序时,我们把它平摊在空间中,这种记录相对位置的排序方法是最直观的木桶排序。缘由先来看看,在计算机视角中,如何利用相对位置进行排序操作。给出数据集:nums = [9,2,1,4,7,8,6]这样的数据集有明显的特点,原创 2017-05-31 23:57:37 · 6244 阅读 · 0 评论 -
算法原理系列:并查集
算法原理系列:并查集《算法》当中第一章节就介绍了该数据结构,但并不知道它到底有何用,也就一直没有研究它。当做过一系列数组+链表+树的题目之后,再看看这并查集似乎又有点意思了,今天就探寻下。 介绍我对并查集的具体应用还不了解,所以就从一些基本的题目引出并查集。 并查含义:合并集合,查找集合。 可以有的操作如下: 给定两个“结点”,检查它们是否同属一个集合。(在同一集合中,所有元素均同质,因此判断两原创 2017-06-01 15:43:41 · 1106 阅读 · 0 评论