自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小刀

不断学习

  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 数据结构与算法18:快速排序法QuickSort

数据结构与算法18:快速排序法QuickSort    快速排序法的基本步骤:    1. 选定一个key    2. 将比key小的放到左边,比key大的放到右边    3. 对key左右两端分别快排C语言代码:void quicksort(int start, int end, int data[]){ int key

2014-01-21 18:10:00 845

原创 数据结构与算法17:最小生成树克鲁斯卡尔Kruskal算法

数据结构与算法17:最小生成树克鲁斯卡尔Kruskal算法    Kruskal算法和prim算法的出发点是一样的,都是要选择那些尽可能权值小的边来组成最小生成树。不同点在于,prim算法是从一个点出发,不断扩张,直到整个树包含了全部点为止。而Kruskal算法则是从边的角度出发,选择尽可能小的边连接点,直到选择的边能够组成一颗包含全部点的树为止。    Kruskal算法

2014-01-21 17:48:59 1085

原创 数据结构与算法16:最小生成树普利姆prim算法

数据结构与算法16:普利姆prim算法    Prim算法是一个计算图的最小生成树的算法。图的最小生成树指的是一个图中去掉一些边,使得剩余的边仍然保持连通,包含全部的点,并且权值之合最小。经过这样的处理后得到的肯定是一颗树。    Prim算法和Dijkstra算法有着很相似的地方。Prim算法的大概思想是,把点划分为两个集合S和V,先放任意一个点到S中(因为随便放哪个得到

2014-01-21 15:05:11 1145

原创 数据结构与算法15:单源最短路径弗洛伊德Floyd算法

数据结构与算法15:单源最短路径弗洛伊德Floyd算法    Floyd算法是另一种经典的最短路径算法,不同的是,dijkstra算法仅计算了一个起点出发的最短路径,而floyd算法可以计算全部节点到其他节点的最短路径。相比之下,Floyd算法复杂度为n3,而dijkstra算法为n2。Floyd算法的基本思想也是松弛。这是一个动态规划的经典例子,在求解各个点到其他点的最短路径的过程中

2014-01-20 22:27:19 2013

原创 数据结构与算法14:线性索引查找

数据结构与算法14:线性索引查找    线性索引查找是在待查询序列比较大,或者不方便排序的情况下的一种措施,通过一个较小的索引来实现快速查找。比如汉语字典,我们需要先在前面的索引中找到这个字,然后再到后面去查找这个字的详细资料,那么前面的这个索引起到的作用就是这个作用了。线性索引查找在实际应用中有多种形式,适合不同的情况。    1. 稠密索引    稠密索引是

2014-01-20 21:12:04 1141

原创 数据结构与算法13:折半查找、差值查找和斐波那契查找

数据结构与算法13:折半查找、差值查找和斐波那契查找    1. 折半查找(二分查找)    折半查找也叫二分查找。是在一个已排序的序列中寻找一个目标key的简单有效方式。折半查找每次对查找区域寻找中间位置的值并进行比较,随后舍弃不符合的区域,然后对剩下区域继续折半,直到遇到key相等的目标元素。折半查找的复杂度为O(lgn)。    2. 差值查找

2014-01-20 20:36:39 1219

原创 数据结构与算法12:单源最短路径Dijkstra算法

数据结构与算法12:单源最短路径Dijkstra算法    Dijkstra算法是一种经典的贪心算法例子。单源最短路径是指如何在一个图中,从某一点出发计算出这个点到其他点的最短距离。    Dijkstra算法的主要思想是贪心算法和松弛。计算中该算法不求一次得到某个点的最优解,而是给出一个该点距离的上界。通过不断降低上界的过程,使得最终达到最优解。该算法的主要步骤如下:

2014-01-20 19:19:22 2219

原创 数据结构与算法11:拓扑排序

数据结构与算法11:拓扑排序    拓扑排序是指在一个AOV网络(http://baike.baidu.com/view/1475661.htm)中找到一种节点的排序序列,使得序列中的任意一个节点在它的所有前置节点的后面,满足AOV所表示的依赖关系,这样的一个序列就叫拓扑序列。而寻找这样一个序列的过程叫拓扑排序。拓扑排序往往不是唯一的,可能存在多种满足同一个AOV网络的拓扑序列。

2014-01-20 17:01:03 844

原创 数据结构与算法10:马踏棋盘问题(骑士周游问题)

问题描述:在一个国际象棋的棋盘上,一个马按照它的规则如何才能从一个点出发遍历每一个位置,且每个点只访问一次。    问题分析:这是一个深搜的问题,沿着一条路前进直到遍历全部的点,那就完成了整个的过程。如果不行,就回退一步,换个方向继续前进。这可以用递归很方便地实现。注意到马在某个位置最多有8个方向可以走,因此需要对这8个方向进行试探。当然这8个方向不一定都存在,比如在边缘可能就会少一些

2014-01-20 16:36:10 2719

原创 数据结构与算法9: 图的广度优先搜索

数据结构与算法9: 图的广度优先搜索    图的广度优先搜索是指每次都访问完一个节点的全部未被访问过的相邻节点,再去访问其中一个相邻节点的全部相邻的未访问节点。广度优先搜索是一个不断扩大范围的过程。广搜可以使用队列实现。    使用邻接表表示图。C++。#include #include #define MAX 100using namespace st

2014-01-20 14:14:04 982

原创 数据结构与算法8:图的深度优先搜索

图的深度优先遍历的基本思想就是沿着一个方向走到底,发现无路可走后退一步接着走,再退一步接着走,直到退回到起点。如果图是连通的,那么一定可以遍历全部节点。这种方式很容易想到递归的方式去实现。    下面是C语言代码,图以邻接表的方式表示。#include #include #define MAX 100typedef struct ptr{ int pos; s

2014-01-20 13:50:20 752

原创 数据结构与算法7:哈夫曼树,二叉查找树,平衡二叉查找树,B树,B+树

这篇文章讨论一些常用的树结构和它们的一点相关性质和算法。    1. 哈弗曼树    哈弗曼树的主要目的是压缩。比如对一系列频率不同的字符,分别给它们不同长度而没有歧义的编码,使得期望的总编码长度降到最低。哈弗曼树比较好理解,不多说,具体过程大概是先选择频率最低的两个字符,分别作为树的最底层两个节点,然后给它们一个父节点,父节点的频率记为它们的合,考察当前剩余的节点和当前没有父节点

2014-01-19 18:37:37 1263

原创 数据结构与算法6:二叉树的存储结构与遍历

1. 二叉树的存储结构    二叉树的存储结构主要有两种。相对一般的树而言,二叉树比较特殊,存储也相对更简单明确。二叉树也是最常用的树。    如果二叉树接近满,那么可以使用顺序存储,因为二叉树的特殊性质,我们根据位置可以直接推算出它在树中的位置。如果是一般的二叉树的话,最常用的的还是二叉链表,即每个节点有两个指针,分别指向左子树和右子树。    2. 二叉树的遍历   

2014-01-19 16:46:37 736

原创 数据结构与算法5:图的存储结构

图的存储方式主要有邻接矩阵,邻接表,十字链表,邻接多重表,边集数组等。        1. 邻接矩阵    邻接矩阵是通过一个二维表格的形式存放图的关系的。D[i][j]表示图中i节点到j节点是否有边或者边的权值。如果两个点没有边,那么D[i][j]=∞。这是很直观的方式,但是不方便节点的加入删除,对于稀疏图而言比较浪费空间。    2. 邻接表    邻接表的形式和树

2014-01-18 21:11:03 894

原创 数据结构与算法4:树的基本存储结构

树的存储结构主要由双亲表示法和孩子表示法,以及它们的各种改造版本。    由于计算机内存是线性的,而线性关系不能直接表示树的存储结构,因此我们需要设计一种能够在线性环境下表示树的数据结构的存储方式。可以存储树的数据结构很多,每种结构有自己的特点和适用的场景,根据实际需要来使用。    双亲表示法:    双亲表示法是指在每个节点中表示它的父节点的位置。整个树的节点作为一

2014-01-18 18:40:00 755

原创 数据结构与算法3:KMP

数据结构与算法3:KMP    KMP算法是一个经典的字符串匹配的高效算法,虽然实际不常用。    KMP是对朴素算法的改进。它的思路的关键在于,当发生失配的情况的时候,我们不一定只往后移动一位。由于我们已经匹配了一部分,那么我们就可以根据已匹配的那一部分模式的特点,来确定往后移动多少位。    具体来说,比如ababs,模式abas,发现第四位不匹配,那么就需

2014-01-17 17:20:50 671

原创 数据结构与算法2:八皇后问题

问题描述:八皇后问题是在一个国际象棋的棋盘上(8乘8)摆放8个皇后,使得相互无法攻击。国际象棋中,皇后的攻击范围是同一行、同一列或者同一对角线上。这个问题总共有92个解(包括对称、旋转都算)。    问题分析:这个问题解法基本上就是尝试不同的情况,留下符合要求的,具体做法很多,这边只是我的做法。考虑到一个事实:每一行有且仅有一个皇后,否则不成立。因此,我们可以把全部的解空间看做一棵树,

2014-01-17 00:54:16 1345

原创 数据结构与算法1:汉诺塔

数据结构与算法1:汉诺塔    汉诺塔问题。这是一个经典的递归问题,直接考虑求解很难,但是考虑递归的做法就会容易很多。设三个棍子分别为X,Y,Z。我们的目标是把X上的64个盘子移动到Z上,且遵守小盘在上的规定。    思路可以是这样的,假设有个神告诉我们如何把63个盘子从一个棍子移动到另一个棍子(只是假设),那我们需要做的就是三步:        1. 把上面63个盘子移动到Y

2014-01-16 16:59:42 824

Windows下Git与TortoiseGit使用教程 PDF

Windows下Git与TortoiseGit使用教程 PDF

2014-03-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除