随笔分类 -  算法与数据结构

图的基本概念
摘要:图的基本概念 1. 图的定义 定义:图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的;其中,点通常被成为"顶点(vertex)",而点与点之间的连线则被成为"边或弧"(edege)。通常记为,G=(V,E)。 2. 图的种类 根据边是否有方向,将图可以划分为:无向图和 阅读全文

posted @ 2018-02-24 11:00 AlanTu 阅读(623) 评论(0) 推荐(0) 编辑

贪心算法
摘要:贪心算法-霍夫曼编码 霍夫曼编码是一种无损数据压缩算法。在计算机数据处理中,霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期 阅读全文

posted @ 2018-02-24 10:57 AlanTu 阅读(293) 评论(0) 推荐(0) 编辑

qsort函数、sort函数
摘要:先说明一下qsort和sort,只能对连续内存的数据进行排序,像链表这样的结构是无法排序的。 首先说一下, qsort qsort(基本快速排序的方法,每次把数组分成两部分和中间的一个划分值,而对于有多个重复值的数组来说,基本快速排序的效率较低,且不稳定)。集成在C语言库函数里面的的qsort函数, 阅读全文

posted @ 2018-02-24 10:55 AlanTu 阅读(348) 评论(0) 推荐(0) 编辑

并查集
摘要:并查集(1)-判断无向图是否存在环 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。 Find:确定元素属于哪一个子集。它可以被用来确定 阅读全文

posted @ 2018-02-24 10:54 AlanTu 阅读(338) 评论(0) 推荐(0) 编辑

prim算法
摘要:一个连通图的生成树是一个极小的连通子图,它包含图中全部的顶点(n个顶点),但只有n-1条边。 最小生成树:构造连通网的最小代价(最小权值)生成树。 prim算法在严蔚敏树上有解释,但是都是数学语言,很深奥。 最小生成树MST性质:假设N=(V,{E})是一个连通网,U是顶点集V的一个非空子集。若(u 阅读全文

posted @ 2018-02-24 10:53 AlanTu 阅读(29029) 评论(2) 推荐(3) 编辑

浅析SkipList跳跃表原理及代码实现
摘要:本文将总结一种数据结构:跳跃表。前半部分跳跃表性质和操作的介绍直接摘自《让算法的效率跳起来--浅谈“跳跃表”的相关操作及其应用》上海市华东师范大学第二附属中学 魏冉。之后将附上跳跃表的源代码,以及本人对其的了解。难免有错误之处,希望指正,共同进步。谢谢。 跳跃表(Skip List)是1987年才诞 阅读全文

posted @ 2018-02-24 10:49 AlanTu 阅读(654) 评论(0) 推荐(0) 编辑

伸展树
摘要:伸展树 一、简介:伸展树,或者叫自适应查找树,是一种用于保存有序集合的简单高效的数据结构。伸展树实质上是一个二叉查找树。允许查找,插入,删除,删除最小,删除最大,分割,合并等许多操作,这些操作的时间复杂度为O(logN)。由于伸展树可以适应需求序列,因此他们的性能在实际应用中更优秀。伸展树支持所有的 阅读全文

posted @ 2018-02-24 10:47 AlanTu 阅读(1079) 评论(0) 推荐(0) 编辑

摊还分析
摘要:摊还分析 本章内容: 1.聚合分析 2.核算法 3.势能法 4.动态表 一 聚合分析 1. 在摊还分析中,我们求数据结构的一个操作序列中所执行的所有操作的平均时间,来评价操作的代价,它不涉及概率,可以保证最坏情况下每个操作的平均性能。 2. 摊还代价:对所有n,一个n个操作的序列最坏情况下话费时间为 阅读全文

posted @ 2018-02-24 10:45 AlanTu 阅读(433) 评论(0) 推荐(0) 编辑

算法集锦(五)
摘要:求连通图的割点(关节点) 题目:求一个连通图的割点,割点的定义是,如果除去此节点和与其相关的边,图不再连通,描述算法。 分析: 1. 最简单也是最直接的算法是,删除一个点然后判断连通性,如果删除此点,图不再连通,则此点是割点,反之不是割点(图的连通性一般通过深搜来判定,是否能一次搜索完 全部顶点); 阅读全文

posted @ 2018-02-24 10:23 AlanTu 阅读(287) 评论(0) 推荐(0) 编辑

P问题、NP问题和NPC问题
摘要:什么是P问题、NP问题和NPC问题 这或许是众多OIer最大的误区之一。 你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“ 阅读全文

posted @ 2018-02-24 10:19 AlanTu 阅读(7895) 评论(1) 推荐(3) 编辑

算法集锦(四)
摘要:归并排序 归并排序算法实现: #include<stdio.h> #include<stdlib.h> #define FatalError( Str ) fprintf( stderr, "%s\n", Str ), exit( 1 ) typedef int ElementType; void 阅读全文

posted @ 2018-02-24 10:09 AlanTu 阅读(175) 评论(0) 推荐(0) 编辑

算法集锦(三)
摘要:开放定址散列表的实现 #include<stdio.h> #include"fatal.h" typedef char* ElementType; typedef unsigned int Index; typedef Index Position; struct HashTbl; typedef 阅读全文

posted @ 2018-02-24 10:02 AlanTu 阅读(180) 评论(0) 推荐(0) 编辑

AVL平衡二叉搜索树原理及各项操作编程实现
摘要:C语言版 #include<stdio.h> #include "fatal.h" struct AvlNode; typedef struct AvlNode *Position; typedef struct AvlNode *AvlTree; typedef int ElementType ; 阅读全文

posted @ 2018-02-24 09:58 AlanTu 阅读(244) 评论(0) 推荐(0) 编辑

AVL平衡二叉树
摘要:查找——平衡二叉树(AVL) 排序二叉树对于我们寻找无序序列中的元素的效率有了大大的提高。查找的最差情况是树的高度。这里就有问题了,将无序数列转化为 二叉排序树的时候,树的结构是非常依赖无序序列的顺序,这样会出现极端的情况。 【如图1】: 这样的一颗二叉排序树就是一颗比较极端的情况。我们在查找时候, 阅读全文

posted @ 2018-02-24 09:56 AlanTu 阅读(163) 评论(0) 推荐(0) 编辑

算法集锦(二)
摘要:二叉查找树(二叉排序树)(C语言) #include<stdio.h> #include "fatal.h" struct TreeNode; typedef struct TreeNode *Position; typedef struct TreeNode *SearchTree; typede 阅读全文

posted @ 2018-02-24 09:54 AlanTu 阅读(158) 评论(0) 推荐(0) 编辑

算法集锦(一)
摘要:最大子序列和 动态规划的算法: 最小公共子序列的和 #include<stdio.h>int MinSubsequenceSum(const int A[],int n){ int i,sum,MinSum; sum=MinSum=0; for(i=0;i<n;i++) { sum+=A[i]; i 阅读全文

posted @ 2018-02-24 09:49 AlanTu 阅读(164) 评论(0) 推荐(0) 编辑

选择问题 and 字谜游戏问题
摘要:#include <stdio.h> #include <stdlib.h> // 第一题 // 找出N个数的第k个最大者 // 方法1:排序(冒泡),降序找出第k个值 // 方法2:选前k个点进行降序排序,后面的数进行比较, // 如果数比第k个数小则忽略, 复杂度低于方法1 #define TY 阅读全文

posted @ 2018-02-24 09:45 AlanTu 阅读(358) 评论(0) 推荐(0) 编辑

TF-IDF与余弦相似性的应用
摘要:TF-IDF与余弦相似性的应用(一):自动提取关键词 这个标题看上去好像很复杂,其实我要谈的是一个很简单的问题。 有一篇很长的文章,我要用计算机提取它的关键词(Automatic Keyphrase extraction),完全不加以人工干预,请问怎样才能正确做到? 这个问题涉及到数据挖掘、文本处理 阅读全文

posted @ 2018-02-24 09:38 AlanTu 阅读(369) 评论(0) 推荐(0) 编辑

一致性哈希算法
摘要:tencent2012 笔试题附加题问题描述: 例如手机朋友网有 n 个服务器,为了方便用户的访问会在服务器上缓存数据,因此用户每次访问的时候最好能保持同一台服务器。已有的做法是根据 ServerIPIndex[QQNUM%n]得到请求的服务器,这种方法很方便将用户分到不同的服务器上去。但是如果一台 阅读全文

posted @ 2018-02-24 09:35 AlanTu 阅读(156) 评论(0) 推荐(0) 编辑

Cache缓存
摘要:闲话Cache:始篇 Caching(缓存)在现代的计算机系统中是一项最古老最基本的技术。它存在于计算机各种硬件和软件系统中,比如各种CPU, 存储系统(IBM ESS, EMC Symmetrix…),数据库,Web服务器,中间件等。它的一个重要的作用就是用于弥补不同速度的硬件之间的存取速度的差距 阅读全文

posted @ 2018-02-24 09:33 AlanTu 阅读(2453) 评论(0) 推荐(0) 编辑

导航