算法导论
刘凯宇
这个作者很懒,什么都没留下…
展开
-
Trie树及其应用
一,知识简介 Trie树,又称单词查找树、键树或前缀树。典型应用是用于排序和统计大量字符串,但不仅限于于字符串,所以经常被搜索引擎用于文本词频统计。它的优点是:最大限度的减少无谓的字符串比较,查询效率比哈希表高。 字典树的核心思想是以空间换时间,利用字符串的公共前缀来降低查询时间开销来达到提高效率的目的。 Trie树的特点: (1)根节点不包含字符,除根节点外每个节点只包含原创 2015-11-29 20:20:10 · 321 阅读 · 0 评论 -
B树、B+树、B*树
B树B树是一种平衡多路查找树,满足下列性质:(1)每个结点的关键字降序排列;(2)第i个孩子的所有关键字(3)所有的叶子结点都在同一层;(4)含有p个关键字的结点有p+1个孩子结点;(5)最小度用t(>=2)来表示,最小度即关键字最少的内结点的孩子数目。根结点的关键字个数为[1,2t-1],非根结点的关键字个数为[t-1, 2t-1]。B树的高度:设总共有n个关键字,最原创 2016-06-15 20:50:15 · 605 阅读 · 0 评论 -
快速排序及其优化
转载地址:http://blog.csdn.net/hacker00011000/article/details/521761001、快速排序的基本思想: 快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。2、快速排序的三个步骤: (1)选择基准:在转载 2016-09-05 20:25:34 · 406 阅读 · 0 评论 -
二叉树的先序中序后序遍历
1,分别写了先序遍历,中序遍历和后序遍历以及层次遍历的非递归算法![cpp] view plain copy // 树的建立和遍历.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using name转载 2016-09-27 00:27:04 · 299 阅读 · 0 评论 -
经典的BM算法
KMP的匹配是从模式串的开头开始匹配的,而1977年,德克萨斯大学的Robert S. Boyer教授和J Strother Moore教授发明了一种新的字符串匹配算法:Boyer-Moore算法,简称BM算法。该算法从模式串的尾部开始匹配,且拥有在最坏情况下O(N)的时间复杂度。在实践中,比KMP算法的实际效能高。 BM算法定义了两个规则:坏字符规则:当文本串中的某个字符跟转载 2016-10-04 17:08:13 · 385 阅读 · 0 评论 -
分治,动态规划,贪心,回溯法,分支界限法
分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的转载 2016-10-04 19:16:17 · 687 阅读 · 0 评论 -
实现只有0,1,2三种元素的乱序数组的排序
实现只有0,1,2三种元素的乱序数组的排序待补充题目:一个数组中只有0,1,2三种元素,要求对这样的数组进行排序。1.思路:1.1思路1: 第一眼看到这样的题目,会举得非常简单,只需要两次遍历数组就可以完成了。第一次遍历,扫描数组中的元素,每次遇到0则count0++,遇到1则count1++,遇到2则count2++,这样一趟下来就能够统计出转载 2016-11-28 09:47:23 · 1635 阅读 · 1 评论 -
一个n位的数,去掉其中的k位,问怎样去使得留下来的(n-k)位数按原来的前后顺序组成的数最小
例如8314925去掉4个数,留下125最小,注意有前后顺序要求,要是没有顺序当然是123。 解决方案贪心算法,在每次被访问的位置保证有最优解。思路一分析:求一共n位,求其中的m位组成的数最小。那么这个m位的数,最高位应该在原数的最高位到第m位区间找,要不然就不能当第m位了,如下图(得到3位数最小,要是百位数在25中找,就当不了百位数了):转载 2017-03-17 23:18:04 · 1103 阅读 · 0 评论