算法
文章平均质量分 78
杰哥一号号
666
展开
-
7 种常用的排序算法
1. 快速排序介绍:快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需时原创 2017-11-06 21:35:44 · 270 阅读 · 0 评论 -
图之二分图匹配
二分图匹配,自然要先从定义入手,那么二分图是什么呢?二分图:二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。简单的说,一个图被分成了两部分,相同的部分没有边,那这个图就转载 2017-11-15 21:09:33 · 250 阅读 · 0 评论 -
hash表(散列表)详解
什么是哈希表? 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。记录的存储位置=f(关键字)这里的对应关系f称为散列函数,又称为哈希(Hash函数),采用散列技术将记录存储在一块连续的转载 2017-12-06 15:16:41 · 278 阅读 · 0 评论 -
遗传算法
遗传算法(Genetic Algorithm)是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗 传机制)演化而来的随机化搜索方法。它是由美国的J.Holland教授1975年首先提出,其主要 特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和 更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应 地调整搜索方向,不需要确定的规则。遗转载 2017-12-25 16:36:26 · 28819 阅读 · 1 评论 -
动态规划入门详解
动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有想象中那么难。网上也有很多关于讲解动态规划的文章,大多都是叙述概念,讲解原理,让人觉得晦涩难懂,即使一时间看懂了,发现当自己做题的时候又会觉得无所适从。我觉得,理解算法最重要的还是在于练习,只有通过自己练习,才可以更快地提升。话不多说,接下来,下面我就通过...转载 2018-03-30 10:31:20 · 125 阅读 · 0 评论 -
B树、B-树、B+树、B*树 详细总结
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关...原创 2018-07-11 12:03:22 · 4846 阅读 · 1 评论 -
动态规划举例详解入门篇
动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有想象中那么难。网上也有很多关于讲解动态规划的文章,大多都是叙述概念,讲解原理,让人觉得晦涩难懂,即使一时间看懂了,发现当自己做题的时候又会觉得无所适从。我觉得,理解算法最重要的还是在于练习,只有通过自己练习,才可以更快地提升。话不多说,接下来,下面我就通过一个...转载 2018-07-12 14:52:51 · 223 阅读 · 0 评论 -
动态规划之0-1背包问题
题目: 有 N 件物品和一个容量为 V 的背包。第 i 件物品的费用是 w[i],价值是 p[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 本文按照动态规划的标准模式解析:http://blog.csdn.net/hearthougan/article/details/53749841 0-1背包问题,表示的是每个物品只有一件,每件物品不能分割,在不超过背...转载 2018-07-12 15:59:25 · 297 阅读 · 0 评论 -
老鼠尝毒药
老鼠尝毒药题目题目的形式一般是:有 n 瓶水,其中一瓶有毒。假设老鼠接触毒药后 5 分钟死亡。最少需要多少只老鼠才能在最短的时间找出哪瓶水有毒?(假设最少老鼠的数量为 m 吧)分析这道题目其实考的是二进制比特串能表示的状态数量。比如一个比特位能表示两种状态:0 和 1。而两个二进制比特位能表示 4 种状态:00,01,10,11。而在这个题目上下文中,老鼠也有两种状态:活和死。这样我们转载 2017-11-06 18:11:13 · 673 阅读 · 0 评论 -
查找之B树,B+树,B*树及分析MySQL的两种引擎
接触到了数据结构当中的B树,B+树,B*树,我觉得应该写一篇博客记录下,毕竟是第一次接触的,只有写了博客以后,感觉对这个的印象才会更加深刻。 前言: 为什么要有B树? 学习任何一个东西我们都要知道为什么要有它,B树也一样,既然存储数据,我们为什么不用红黑树呢?这个要从几个方面来说了, 计算机有一个局部性原理,就是说,当一个数据被用到时,其附近的数据也通常会马上被使用。转载 2017-11-14 23:31:35 · 265 阅读 · 0 评论 -
查找之平衡二叉树
平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对二叉查找树来转载 2017-11-14 21:57:03 · 209 阅读 · 0 评论 -
字符串匹配之KMP算法
KMP算法,是由Knuth,Morris,Pratt共同提出的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间内完成匹配查找,而不会发生退化,是一个非常优秀的模式匹配算法。但是相较于其他模式匹配算法,该算法晦涩难懂,第一次接触该算法的读者往往会看得一头雾水,主要原因是KMP算法在构造跳转表next过程中进行了多个层面的优化和抽象,使得KMP算法进行模式匹配的原理显得不那么直白。本文希望能够转载 2017-11-13 15:10:49 · 203 阅读 · 0 评论 -
赫夫曼树和赫夫曼编码
哈夫曼(HUFFMAN)树和哈夫曼编码属于数据结构里面树章节的内容。哈夫曼编码是哈夫曼树的一个应用。哈夫曼编码应用广泛,如JPEG中就应用了哈夫曼编码。 首先介绍什么是哈夫曼树。哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的 路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的带权路径长度记为WP转载 2017-11-13 15:17:16 · 336 阅读 · 0 评论 -
图的遍历:深度优先遍历和广度优先遍历
图的遍历:深度优先、广度优先遍历 图的遍历是指从图中的某一顶点出发,按照一定的策略访问图中的每一个顶点。当然,每个顶点有且只能被访问一次。 在图的遍历中,深度优先和广度优先是最常使用的两种遍历方式。这两种遍历方式对无向图和有向图都是适用的,并且都是从指定的顶点开始遍历的。先看下两种遍历方式的遍历规则:深度优先 深度优先遍历也叫深度优先搜索(转载 2017-11-13 20:57:14 · 3776 阅读 · 0 评论 -
图之最小生成树-Prim算法和Kruskal算法
Prim算法1.概览普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(英语:Vojtěch Jarník)发现;并在1957年由美国计算机科学家罗转载 2017-11-13 21:03:12 · 308 阅读 · 0 评论 -
图之最短路径:迪杰斯特拉(Dijkstra)算法
定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中不存在负权边。用于对有权图进行搜索,找出图中两点的最短距离,既不是DFS搜索转载 2017-11-14 10:32:05 · 1368 阅读 · 0 评论 -
图之最短路径:弗洛伊德(Floyd)算法
弗洛伊德算法介绍和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。基本思想 通过Floyd计算图G=(V,E)中各个顶点的最短路径时,需要引入一个矩阵S,矩阵S中的元素a[i][j]表示顶点i(第i个顶点)到顶点转载 2017-11-14 11:40:41 · 350 阅读 · 0 评论 -
图之拓扑排序
本文将从以下几个方面介绍拓扑排序:拓扑排序的定义和前置条件和离散数学中偏序/全序概念的联系典型实现算法Kahn算法基于DFS的算法解的唯一性问题实际例子取材自以下材料:http://en.wikipedia.org/wiki/Topological_sortinghttp://en.wikipedia.or转载 2017-11-14 12:18:55 · 322 阅读 · 0 评论 -
图之关键路径
下面的内容摘自程杰的《大话数据结构》,这是一本通俗易懂,适合初学数据结构人群的书,本人实力推荐。在我的经验意识深处,“关键”二字一般都是指临界点。凡事万物都遵循一个度的问题,那么存在度就会自然有临界点。关键路径也正是研究这个临界点的问题。在学习关键路径前,先了解一个AOV网和AOE网的概念:用顶点表示活动,用弧表示活动间的优先关系的有向图:称转载 2017-11-14 15:26:37 · 5733 阅读 · 1 评论 -
四种常用磁盘调度算法
磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请求。由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列,常用的磁盘调度算法有以下四种:先来先服务算法(FCFS),最短寻道时间优先算法(SSTF),扫描算法(SCAN),循环扫描算法(CSCAN) 例:假定某磁盘共有200个柱面,编号为0...转载 2018-09-03 22:04:20 · 36453 阅读 · 2 评论