博客专栏  >  编程语言   >  数据结构与算法

数据结构与算法

数据结构面面观,经典算法透彻解析。

关注
33 已关注
49篇博文
  • 前缀、中缀、后缀表达式

    前缀、中缀、后缀表达式 1.定义 所谓的前、中、后,是指表达式中运算符相对于运算对象的位置。 中缀 运算符位于运算对象中间,即是中缀表达式。如(1+2)*3-4 最普遍的、最易被人脑理解的是中缀表达式...

    2015-06-23 16:13
    2195
  • 二分查找的改进--差值查找

    差值查找 在二分查找中,我们每次比较都可以排除一半的数据量,这个已经是很高效了。如果利用关键字本身的信息,每次排除的数据量充分依赖于关键字的大小,则查找会更高效,这就是差值查找的思想。 下面通...

    2014-09-21 00:31
    2689
  • 线性检索:顺序检索

    当我们对所检索序列中元素的分布一无所知或元素本身就是随机分布的时候,顺序检索是常用的方法。 常用的返回值策略是,若用数组array,从下标0开始存储元素,检索成功则返回相应下标,失败则返回-1...

    2014-08-15 20:32
    1413
  • 集合的检索:位图法

    位图法是一种逻辑上很巧妙的描述集合的方法。 如集合S={2,4,1,5,12},它用位图描述就是 0110 1100 0000 1000,两个字节即可描述S,左边是低阶位。用bitset存储的话就是{...

    2014-08-15 19:53
    1649
  • 数据结构:最小生成树--Kruskal算法

    Kruskal算法 求解最小生成树的另一种常见算法是Kruskal算法,它比Prim算法更直观。从直观上看,Kruskal算法的做法是:每次都从剩余边中选取权值最小的,当然,这条边不能使已有...

    2014-08-07 11:45
    3205
  • 数据结构:最小生成树--Prim算法

    最小生成树 给定一无向带权图,顶点数是n,要使图连通只需n-1条边,若这n-1条边的权值和最小,则称有这n个顶点和n-1条边构成了图的最小生成树(minimum-cost spanning ...

    2014-08-05 00:30
    6813
  • 数据结构:点对之间最短距离--Floyd算法

    Floyd算法 Dijkstra算法是用于解决单源最短路径问题的,Floyd算法则是解决点对之间最短路径问题的。Floyd算法的设计策略是动态规划,而Dijkstra采取的是贪心策略。当然,...

    2014-08-04 13:06
    2175
  • 数据结构:单源最短路径--Dijkstra算法

    单源最短路径 给定一带权图,图中每条边的权值是非负的,代表着两顶点之间的距离。指定图中的一顶点为源点,找出源点到其它顶点的最短路径和其长度的问题,即是单源最短路径问题。 Dijkstra算法...

    2014-08-03 21:28
    2005
  • 数据结构:图--拓扑排序

    拓扑排序 在实际应用中,有向图的边可以看做是顶点之间制约关系的描述。把顶点看作是一个个任务,则对于有向边表明任务Vj的完成需等到任务Vi完成之后,也就是说任务Vi先于任务Vj完成。对于一个有...

    2014-08-03 01:10
    3025
  • 数据结构:图的遍历--深度优先、广度优先

    图的遍历是指从图中的某一顶点出发,按照一定的策略访问图中的每一个顶点。当然,每个顶点有且只能被访问一次。 在图的遍历中,深度优先和广度优先是最常使用的两种遍历方式。这两种遍历方式对无向图和有向图都是适...

    2014-08-02 11:20
    15628
  • 数据结构:图的实现--邻接表

    当图中的边数较少时,用邻接表来实现图结构,则会浪费很多内存空间。因此,考虑另一种实现图结构的方法:邻接表。在邻接表中主要有两种节点结构体:

    2014-08-01 01:02
    4481
  • 数据结构:图的实现--邻接矩阵

    为了表现图中顶点之间的关联,我们可以使用邻接矩阵来实现图结构。所谓的邻接矩阵,就是一个反应边与边之间联系的二维数组。这个二维数组我们用matrix[numV][numV]表示,其中numV是顶点数。 ...

    2014-07-31 23:29
    8029
  • 串的匹配:朴素匹配&KMP算法

    引言 字符串的模式匹配是一种常用的操作。模式匹配(pattern matching),简单讲就是在文本(text,或者说母串str)中寻找一给定的模式(pattern)。通常文本都很大,而模式则比较短...

    2014-07-23 22:30
    2003
  • 图论基础

    图概述 图(Graph)是一种比线性结构和树形结构都要复杂的数据结构。简单讲,图是由表示数据元素的的集合V和表示数据之间关系的集合E组成。其中,数据元素常称作顶点(vertex),数据之间的关系常称...

    2014-07-18 00:20
    3469
  • 索引排序

    索引排序 在排序时,若是数据很复杂,对数据的移动显然是费时的。若把数据移动改为指针移动,则减少了操作复杂度。索引排序,也叫地址排序,就是这种排序思想。 索引含义 根据索引的含义不同,索引排序的算法...

    2014-07-17 00:30
    3015
  • 二分检索

    二分检索 二分检索(Binary Search)也叫二分查找,是应用于有序表上的一种检索方法。二分检索的思想是:由于序列已经有序,故不需要顺序遍历,每次只需和序列中间位置的元素进行比较即可,以此确定...

    2014-07-13 15:20
    1342
  • 哈夫曼树

    哈夫曼树 给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点...

    2014-07-12 00:03
    2921
  • 桶排序

    桶排序 桶排序(Bucket Sort)是对基数排序的一个变种。在排序过程中没有用到计数数组,而是用不同的桶来暂时存储关键字。看一个示意图: 整个过程就是在不断地分配、收集。 在实际应用中,根据桶的...

    2014-07-11 01:07
    1946
  • 基数排序

    前言 当序列中元素范围比较大时,就不适合使用计数排序。针对这种情况,就有了基数排序,这是一种按位排序。它仍然是以计数排序为基础。 基数排序 基数排序的基数:十进制数的基数自然是10,二进制的基数自...

    2014-07-10 21:39
    1697
  • 计数排序

    前言 一般的排序都是需要进行关键字的比较的。有没有不需要比较的的呢?有的,计数排序就是其中一种。 计数排序 假设输入序列都是0到k之间的整数,则可使用计数排序。具体操作是这样的:创建一个同类型同等...

    2014-07-09 22:09
    1223

C++拾遗
2339337
C指针
929069
经典算法揭秘
2466856
img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部