随笔分类 -  《算法导论》&《算法》学习笔记

《算法导论》第3版,作者Thomas H.Cormen等,殷建平等译; 《算法》第4版,作者Robert Sedgewick & Kevin Wayne, 谢路云译。
摘要:最近还接触到了一些关于霍夫曼编码的题目,如下一题: 某段文本中各个字母出现的频率分别是{a:4,b:3,o:12,h:7,i:10},使用哈夫曼编码,则哪种是可能的编码:( ) Aa(000)b(001)h(01)i(10)o(11) Ba(0000)b(0001)h(001)o(01)i... 阅读全文
posted @ 2015-09-09 21:19 峰子_仰望阳光 阅读(1053) 评论(0) 推荐(0)
摘要:本文主要叙述用于字符串匹配的KMP算法。 阮一峰的博文“字符串匹配的KMP算法"将该算法讲述得非常形象,可参考之。字符串‘部分匹配值’计算 KMP算法重要的一步在于部分匹配值的计算。模仿《算法导论》中的伪代码,对应的C++代码为: 1 vector partialMatching(strin... 阅读全文
posted @ 2015-06-08 11:32 峰子_仰望阳光 阅读(863) 评论(0) 推荐(0)
摘要:博文“二分图的最大匹配、完美匹配和匈牙利算法”对二分图相关的几个概念讲的特别形象,特别容易理解。本文介绍部分主要摘自此博文。 还有其他可参考博文: 趣写算法系列之--匈牙利算法 用于二分图匹配的匈牙利算法1.前言 二分图:简单来说,如果图中点可以被分为两组,并且使得所有边都跨越组的边界,... 阅读全文
posted @ 2015-05-20 22:30 峰子_仰望阳光 阅读(987) 评论(0) 推荐(0)
摘要:也许最直观的图处理问题就是你常常需要使用某种地图软件或者导航系统来获取从一个地方到另一个地方的路径。我们立即可以得到与之对应的图模型:顶点对应交叉路口,边对应公路,边的权重对应该路段的成本(时间或距离)。如果有单行线,那就意味着还需要考虑加权有向图。在这个模型中,问题很容易就可以被归纳为: 找... 阅读全文
posted @ 2015-05-10 23:26 峰子_仰望阳光 阅读(533) 评论(0) 推荐(0)
摘要:本文主要参考自《算法》。 加权图是一种为每条边关联一个权值或是成本的图模型。这种图能够自然地表示许多应用。在一幅航空图中,边表示航线,权值则可以表示距离或是费用。在一幅电路图中,边表示导线,权值则可能表示导线的长度即成本,或是信号通过这条线路所需的时间。在这些情形中,最令人感兴趣的自然是将成本... 阅读全文
posted @ 2015-05-09 12:35 峰子_仰望阳光 阅读(1644) 评论(0) 推荐(0)
摘要:本文兼参考自《算法导论》及《算法》。 以前一直不能够理解深度优先搜索和广度优先搜索,总是很怕去碰它们,但经过阅读上边提到的两本书,豁然开朗,马上就能理解得更进一步。 下文将会用到的一个无向图例子如下: 深度优先搜索迷宫搜索 在《算法》这本书中,作者写了很好的一个故事。这个故事让我马上理解... 阅读全文
posted @ 2015-04-27 23:30 峰子_仰望阳光 阅读(1750) 评论(0) 推荐(0)
摘要:本文关于图的概述主要引自《新编数据结构习题与解析》(李春葆等著)第11章。1. 图的基本概念1.1 图 图G由两个集合V和E组成,记为G=(V, E),其中V是顶点的有限非空集合,E是V中顶点偶对的有限集,这些顶点偶对 称为边。1.2 无向图 在图G中,如果代表边的顶点偶对是无序的,则称G为... 阅读全文
posted @ 2015-04-22 11:41 峰子_仰望阳光 阅读(928) 评论(0) 推荐(0)
摘要:本文参考自一博文与《算法导论》。 《算法导论》之前介绍了合并排序、堆排序和快速排序的特点及运行时间。合并排序和堆排序在最坏情况下达到O(nlgn),而快速排序最坏情况下达到O(n^2),平均情况下达到O(nlgn),因此合并排序和堆排序是渐进最优的。这些排序在执行过程中各元素的次序基于... 阅读全文
posted @ 2015-04-21 23:22 峰子_仰望阳光 阅读(312) 评论(0) 推荐(0)
摘要:本文介绍部分主要参考自一博文及《算法导论》。 散列表(Hash Table)是实现字典操作的一种有效数据结构。尽管最坏情况下,散列表中查找一个元素的时间与链表中查找的时间相同,达到了O(n)。然而在实际应用中,散列表的性能是极好的。在一些合理的假设下,在散列表中查找一个元素的平均时间是O(... 阅读全文
posted @ 2015-04-18 22:39 峰子_仰望阳光 阅读(468) 评论(0) 推荐(0)
摘要:顺序查找对于有序序列/链表和无序序列/链表都可行,但二分查找就只能对有序序列进行查找了。二分查找在查找时速度较快(lgN),不过它对序列的有序要求会导致节点插入时间的增加(相对无序序列/链表)。 《算法》总结了一个表如下:算法(数据结构)最坏情况下的成本(N次插入后)平均情况下的成本(N次随机... 阅读全文
posted @ 2015-04-14 22:15 峰子_仰望阳光 阅读(477) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2015-04-14 22:10 峰子_仰望阳光 阅读(162) 评论(0) 推荐(0)
摘要:本文关于排序算法概述引自《新编数据结构习题与解析》(李春葆等著)第10章及《算法》第3章3.1节。 被查找的对象是由一组记录组成的表或文件,每个记录由若干个数据项组成,并假设每个记录都有一个能唯一标识该记录的关键字。 查找的定义是:给定一个值k,在含有n个记录的表中找出关键字等于k的记录... 阅读全文
posted @ 2015-04-14 11:53 峰子_仰望阳光 阅读(341) 评论(0) 推荐(0)
摘要:关于堆排序的介绍主要引自一博文,比较详细的例子可参考另一博文。 动画演示可以参考一网页。 关于二叉堆,有一博文二叉堆(一)之 图文解析写的很清晰详细,很值得参考。堆 堆给人的感觉是一个二叉树,但是其本质是一种数组对象,因为对堆进行操作的时候将堆视为一颗完全二叉树,树中每个节点与数组中的存放... 阅读全文
posted @ 2015-04-13 16:32 峰子_仰望阳光 阅读(350) 评论(0) 推荐(0)
摘要:简介 快速排序是由C.A.R Hoare于1960年发明的。 快速排序可能是应用最广泛的排序算法。快速排序流行的原因是它实现简单、适用于各种不同的输入数据且在一般应用中比其他排序算法都要快得多。快速算法引人注目的特点包括它是原地排序(只需要一个很小的辅助栈),且将长度为N的数组排序所需的时间和N... 阅读全文
posted @ 2015-04-13 11:06 峰子_仰望阳光 阅读(327) 评论(0) 推荐(0)
摘要:归并排序(Merge Sort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 归并操作(Merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。归并排序... 阅读全文
posted @ 2015-04-11 22:41 峰子_仰望阳光 阅读(891) 评论(0) 推荐(0)
摘要:本文引自《新编数据结构习题与解析》(李春葆等著)第1章。 1. 数据结构的基本概念 1.1 数据 数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。例如,整数、实数和字符串都是数据。 1.2 数据元素 数据元素也称为节点,是表示数据的基本单... 阅读全文
posted @ 2015-04-10 22:50 峰子_仰望阳光 阅读(996) 评论(0) 推荐(0)
摘要:《算法》第4版作者是Robert Sedgewick 和 Kevin Wayne。 1. 选择排序 选择排序可以说是最简单的排序方法。首先,找到数组中最小的那个元素;其次,将它与数组的第一个元素交换位置(如果第一个元素就是最小元素,那么它就和自己交换);再次,在剩下的元素中找到最小的元素,将它... 阅读全文
posted @ 2015-04-10 20:39 峰子_仰望阳光 阅读(464) 评论(0) 推荐(0)
摘要:本文关于排序算法概述主要引自《新编数据结构习题与解析》(李春葆等著)第11章。 所谓排序,就是要整理表中的元素,使之按关键字递增(或递减)次序排列起来。 如果待排序的表中,存在多个关键字相同的元素,经过排序后这些具有相同关键字的元素之间的相对次序保持不变,则称这种排序方法是稳定的;反之,若具... 阅读全文
posted @ 2015-04-09 20:53 峰子_仰望阳光 阅读(200) 评论(0) 推荐(0)
摘要:此文转自一博文。 更详细资料可从百度云下载。 对于很多元素为零的稀疏矩阵,仅存储非零元素可使矩阵操作效率更高。现有许多种稀疏矩阵的存储方式,但是多数采用相同的基本技术,即存储矩阵所有的非零元素到一个线性数组中,并提供辅助数组来描述原数组中非零元素的位置。 以下是几种常见的稀疏矩阵存储格式:... 阅读全文
posted @ 2015-04-09 17:34 峰子_仰望阳光 阅读(951) 评论(0) 推荐(0)
摘要:本文关于AVL树的介绍引自博文AVL树(二)之 C++的实现,与二叉查找树相同的部分则不作介绍直接引用;代码实现是在本文的基础上自己实现且继承自上一篇博文二叉查找树。1.AVL树的介绍 AVL树是高度平衡的而二叉树。它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 上面的两张... 阅读全文
posted @ 2014-12-15 18:44 峰子_仰望阳光 阅读(587) 评论(0) 推荐(0)