文章分类 - 软件设计师
摘要:1. 图的基本概念 图是一种比线性表和树更加复杂的数据结构,在线性表中,每个元素都只有一个直接前驱和一个直接后继;在树形结构中,数据元素之间有明显的层次关系,每一层上的某个元素,可能与下一层多个元素相关,但只能和上一层一个元素相关。而在图形结构中,结点之间的关系是任意的,图中任意两个数据元素之间
阅读全文
摘要:7.1 线性表的查找 7.1.1 顺序查找 概念:从表中最后一个记录开始,逐个进行关键字和给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功,否则不成功。 优化: 使表有序,ASL(成功)更小 按查找概率排序,ASL(成功)更小 查找判定树,n+1种失败的可能 7.1.2 折半查找 概念:
阅读全文
摘要:8.1 插入排序 8.1.1 直接插入排序 思路: ①从前面的有序子表中查找出待插入元素应该被插入的位置; ②给插入位置腾出空间,将待插入元素复制到表中的插入位置。 代码 void InsertSort(ElemType a[], int n){ for(int i = 2; i <= n; i++
阅读全文
摘要:1 int Binary_Search(SeqList L, ElemType key){ 2 int low = 0, high = L.length - 1, mid; 3 while(low < high){ 4 mid = (low + high)/2; //取中间位置 5 if(L.ele
阅读全文
摘要:1 //求哈夫曼编码的算法如下所示: 2 // 哈夫曼树和哈夫曼编码的存储表示 3 typedef struct{ 4 unsigned int weight; 5 unsigned int parent,lchild,rchild; 6 }HTNode,*HuffmanTree; 7 typede
阅读全文
摘要:一、算法思想 二、算法如下 1 bool TopologicalOrder(ALGraph G, Stack &T){ 2 //有向网G采用邻接表存储结构,求各顶点时间的最早发生时间ve(全局变量)。 3 //T为拓扑序列顶点栈,S为零入度顶点栈。 4 //若G无回路,则用栈T返回G的一个拓扑序列,
阅读全文
摘要:对一个AOV网进行拓扑排序的算法有很多,下面介绍一种比较常用的一种方法的步骤: 一、算法思想: ①从AOV网中选择一个没有前驱的顶点并输出; ②从网中删除该顶点和所有以它为起点的有向边; ③重复①和②直到当前的AOV网为空或当前网中不存在无前驱的结点为止。后一种情况说明有向图中必然存在环 二、伪代码
阅读全文
摘要:引言: 解决这个问题的一个办法是:每次以一个顶点为源点,重复执行Dijkstra算法n次。这样便可求得每一对顶点之间的最短路径。总的时间复杂度为O(n^3)。 这里要介绍的由弗洛伊德提出的另一个算法。时间复杂度也是O(n^3),但是形式上简单些。 一、算法思想: 主要用来求用四阶方阵表示的图中没两个
阅读全文
摘要:一、算法思想: ①从图中任意取出一个顶点,把它当做一棵树。 ②然后从这棵树相接的边中选取一条最短(权值最小)的边,并将这条边及其所连接的顶点也加入到这棵树中,此时得到了一棵有两个顶点的树。 ③然后从这棵树相接的边中选取一条最短(权值最小)的边,并将这条边及其所连接的顶点也加入到这棵树中,得到一棵有三
阅读全文
摘要:1 //广度优先搜索算法 2 #define MAX_VERTEX_NUM 100 3 bool visited[MAX_VERTEX_NUM]; //访问标记数组 4 5 void BFSTraverse(Graph G){ 6 //本算法用于对图G进行光度优先遍历 7 for(int i = 0
阅读全文
摘要:一、单源最短路径问题——BFS(广度优先搜索)算法: 算法思想: 若图是非带权图,定义从定点v到顶点w的最短路径d(v,w)为从u到v的任何路径的最少的变数; 若u到v没有同路,则d(v,w)为无穷大。 使用BFS,我们可以求解一个满足上述定义的非带权图的单源最短路径问题,这是由广度优先搜索总是按照
阅读全文
摘要:一、算法思想: 设有两个顶点集合S和T,集合S中存放图中已找到最短路径的顶点,集合T存放图中剩余顶点。 ①初始状态时,集合S中只包含源点V0,然后不断从集合T中选取到顶点V0路径长度最短的顶点Vu并入集合S中; ②集合S每并入一个新的顶点Vu,都要修改V0到集合T中的最短路径长度值。 ③不断重复此过
阅读全文