
数据结构
liujianfei526
这个作者很懒,什么都没留下…
展开
-
教你透彻了解红黑树
转 推荐阅读:Left-Leaning Red-Black Trees, Dagstuhl Workshop on Data Structures, Wadern, Germany, February, 2008. 直接下载:http://www.cs.princeton.edu/~rs/talks/LLRB/RedBlack.pdf ----------------------转载 2015-04-02 22:37:27 · 433 阅读 · 0 评论 -
Link节点类的改进——通过构建freelist自行管理内存
转自:http://www.cnblogs.com/liushang0419/archive/2011/05/29/2061571.html 在书中看到一有趣的东西,叫做freeList,无非就是优化Link节点类,是的new Link操作跑的更快 !方法是重载运算符,重新定义new,和delete方法。英文书,原理细节描述不清,我的大致理解是,new操作的时候,要跑到内存中去取一块内存单元,C转载 2015-04-02 21:11:09 · 549 阅读 · 0 评论 -
数据结构专题——线段树
线段树 转载请注明出处,谢谢!http://blog.youkuaiyun.com/metalseed/article/details/8039326 持续更新中··· 一:线段树基本概念 1:概述 线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操转载 2016-07-04 00:09:22 · 409 阅读 · 0 评论 -
extern "C"的用法解析
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言, C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言 ,为了支持函数的重载,C++对全局函数的处理方式与C有转载 2016-07-13 20:11:03 · 295 阅读 · 0 评论 -
最大团问题
一、定义 一个无向图 G=(V,E),V 是点集,E 是边集。取 V 的一个子集 U,若对于 U 中任意两个点 u 和 v,有边 (u,v)∈E,那么称 U 是 G 的一个完全子图。 U 是一个团当且仅当 U 不被包含在一个更大的完全子图中。 G的最大团指的是定点数最多的一个团。 二、常用做法 1、顺序贪婪启发式搜索算法 2、局部搜索启发式算转载 2016-07-12 16:54:22 · 1158 阅读 · 4 评论 -
AC自动机算法
AC自动机简介: 首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有字典树Trie和KMP模式匹配算法的基础知识。KMP算法是单模式串的字符匹配算法,AC自动机是多模式串的字符匹配算法。转载 2015-08-15 22:16:38 · 378 阅读 · 0 评论 -
决策树算法——ID3算法,C4.5算法
目录(?)[+] 决策树算法 1摘要2决策树引导3决策树的构造 31ID3算法32C45算法 4关于决策树的几点补充说明 41如果属性用完了怎么办42关于剪枝 决策树算法 1、摘要 在前面两篇文章中,分别介绍和讨论了朴素贝叶斯分类与贝叶斯网络两种分类算法。这两种算法都以贝叶斯定理为基础,可以对分类及决策问题进行转载 2015-08-21 21:28:47 · 722 阅读 · 0 评论 -
用“牛顿迭代法”求根号2的近似值
一、提出问题,引入新课 1、作为高中生,大家都知道根号2的近似值是1.414,这是应该记住的常数,可你知不知道如何去求这个近似值呢?(提出问题,激发兴趣,开阔思路,启迪思维,导入新课) 2、学生回答:有学生说用二分法,有学生说逐步必近(因为无法显示,故用同音字替代),但追问如何二分,如何必近,就没有下文了。(在这里主要是让学生认识到不能机械的对书本上的知识采用“拿来主义”,老师说根号2是转载 2015-06-23 22:28:17 · 30267 阅读 · 1 评论 -
胜者树与败者树
胜者树与败者树 胜者树和败者树都是完全二叉树,是树形选择排序的一种变型。每个叶子结点相当于一个选手,每个中间结点相当于一场比赛,每一层相当于一轮比赛。 不同的是,胜者树的中间结点记录的是胜者的标号;而败者树的中间结点记录的败者的标号。 胜者树与败者树可以在log(n)的时间内找到最值。任何一个叶子结点的值改变后,利用中间结点的信转载 2015-06-29 15:31:36 · 379 阅读 · 0 评论 -
KMP算法学习&总结
1、传统的字符串匹配算法 /* * 从s中第sIndex位置开始匹配p * 若匹配成功,返回s中模式串p的起始index * 若匹配失败,返回-1 */ int index(const std::string &s, const std::string &p, const int sIndex = 0) { int i = sIndex, j = 0; if转载 2015-07-02 11:48:12 · 349 阅读 · 0 评论 -
回文树【处理一类回文串问题的强力工具】
今天我们来学习一个神奇的数据结构:Palindromic Tree。中译过来就是——回文树。 那么这个回文树有何功能? 假设我们有一个串S,S下标从0开始,则回文树能做到如下几点: 1.求串S前缀0~i内本质不同回文串的个数(两个串长度不同或者长度相同且至少有一个字符不同便是本质不同) 2.求串S内每一个本质不同回文串出现的次数 3.求串S内回文串的个数(其实就是1和2结合起来)转载 2015-08-16 14:00:22 · 452 阅读 · 0 评论 -
字符串匹配的KMP算法
字符串匹配是计算机的基本任务之一。 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。 这种算法不太容易理解,网上有很多解释,转载 2015-07-01 16:41:31 · 338 阅读 · 0 评论 -
有向图强连通分量的Tarjan算法
转载:https://www.byvoid.com/blog/scc-tarjan/ [有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。 下图中,子转载 2015-04-08 10:59:22 · 385 阅读 · 0 评论 -
无向图的最大割问题的实现
问题描述: 什么是无向图的最大割? 有无向图G=(V,E).设U是V的一个子集。对任意的顶点u,v如果(u,v)是E中的一条边,如果u在U中,则v一定不 在U中,这样的边称为顶点集合U的一个割边。那个这个顶点集合U所有的割边就构成图G的一个割。最大割 的意思,就是说含割边最多的割。 编程任务: 给定一个无向图G,计算G的最大割。 数据输入: 第一行2个整数 n,e表示顶点个数和边个转载 2015-05-07 23:57:27 · 6225 阅读 · 0 评论