算法和数据结构
文章平均质量分 75
Jifu_M
这个作者很懒,什么都没留下…
展开
-
算法和数据结构项目练习7-广度优先搜索(BFS)
Breadth First Search项目介绍代码实现项目介绍本项目实现广度优先搜索算法。读取txt文件中第一行表示图中顶点数的单个整数N读取txt文件中第二行开始是一对对的整数。每一对表示图中某条边两端的两个顶点。图是无向的,因此节点编号为0 - N‐1。程序先遍历图的顶点,从节点0开始,输出从这个节点可以到达的所有节点。输出包含从算法获得的生成树。它应该被打印成树中有序的边列表。每条边的顶点应该按照BFS遍历的顺序列出。输入的txt文件如下:其中第一行是总的顶点数,后面的两列组原创 2021-02-17 22:25:40 · 234 阅读 · 0 评论 -
算法和数据结构项目练习6-基于Karp‐Rabin 算法的字符串搜索
Karp‐Rabin String Search项目介绍代码实现项目介绍本项目实现了Karp‐Rabin字符串搜索算法。程序读取的txt文件包含两个字符序列,分别在不同的测试行上。第一行是目标序列T,第二行是搜索序列S。读取这两个字符串并使用Karp‐Rabin算法找到序列S在序列T中出现的所有情况。对于每个匹配的序列,打印T中第一个匹配字符的位置。不使用STL或等价的库。代码中使用简单的哈希函数做例子,可以自行改为复杂版的避免哈希值撞车。读取文件介绍:第一行是序列T,它是基于DNA碱原创 2021-02-17 21:22:54 · 200 阅读 · 1 评论 -
算法和数据结构项目练习5-哈希链表
Hash Chaining Table 项目介绍代码实现项目介绍本项目实现一个简单的哈希表。txt文件包含一个整数值序列。读取它们并使用链接构造一个哈希表。程序应该依次读取每个整数,并使用mod 100作为哈希函数计算其哈希值。因此,如果键是k,那么哈希值h(k) =kmod 100。(最简单的哈希函数)完成计算后打印:哈希表中空条目的数量。最长链的长度。不使用STL或等价的库。哈希表示例图如下:读取的文件示例:代码实现#include <ios原创 2021-02-17 16:55:44 · 232 阅读 · 1 评论 -
算法和数据结构项目练习4-BST排序
BST Sort项目介绍代码实现关于二叉查找树(Binary Search Tree)的介绍可以看一下我的这篇文章:https://blog.csdn.net/Jifu_M/article/details/112827685项目介绍本项目实现BST排序并测试它的正确性。被读取txt文件包含一系列整数值。读取它们并按照读取它们的顺序构造一个二叉搜索树。因此,读取的第一个数字将是树的根。在构建树的过程中,您不需要平衡它。当把最后一个值读入BST时,进行序遍历以升序输出值在5个字符宽的字段中每一原创 2021-02-17 16:38:07 · 200 阅读 · 0 评论 -
算法和数据结构项目练习3-数组虚拟初始化
Array Virtual Initialization项目介绍代码实现项目介绍这个项目将实现一个虚拟初始化数组并测试它的正确性。使用三个整数数组:data[]、forward[]和backward[],每个数组包含100个元素。txt文件包含一组成对的:where ,what。使用虚拟初始化将值what存储在数据数组的位置中。例如data[where] = what。这个序列被一对-1 -1终止。后面跟着一个单整数值序列probe。对于每个这样的值,您需要测试data[pr原创 2021-02-17 16:12:45 · 180 阅读 · 0 评论 -
算法和数据结构项目练习2-最小堆和最大堆
Implementing a Heap项目介绍项目介绍原创 2021-02-17 14:51:04 · 165 阅读 · 1 评论 -
算法和数据结构项目练习1-堆栈
Implementing a Stack项目要求代码实现项目要求读取包含若干单词的txt文本文件,并使用堆栈以相反的顺序在屏幕上显示这些单词。可以假设任何单词的长度都不超过20个字符。不使用单独的结构或类或STL来实现堆栈。练习用到txt文件如下所示:代码实现#include<iostream>#include<string>#include<fstream>using namespace std;void push(string* strin原创 2021-02-16 15:42:52 · 158 阅读 · 0 评论 -
算法和数据结构练习题-下
Data Structure And Algorithm Questions 下19. Dijkstra算法寻找最短路径20. 插入数据到2-4树中21. 从2-3-4树中删除数据22. 动态编程相关术语:23. 基数排序24. 对单词进行基数排序25. Chaining的复杂度26. 完美哈希27. 绘制AVL树28. 在AVL树中删除值29. Dijkstra's最短路径算法29. 加权图最短路径30. Dijkstra算法和Bellman Ford算法接上文:https://blog.csdn.原创 2021-01-21 22:49:07 · 224 阅读 · 0 评论 -
算法和数据结构练习题-上
Data Structure And Algorithm Questions1. 在初始为空的堆上执行以下操作时,绘制最小堆:2. 归并排序的运行时间是否依赖于输入文件中的键值?3. 递归归并排序4. 绘制二叉搜索树1. 在初始为空的堆上执行以下操作时,绘制最小堆:insert(1), insert(5), insert(2), insert(6), insert(4),insert(8), remove, insert(7), insert(3).答:2. 归并排序的运行时间是否依赖于输入文原创 2021-01-21 22:04:23 · 337 阅读 · 0 评论 -
算法和数据结构之最短路径算法
Shortest Path AlgorithmsWeighted Graphs最短路径Dijkstra’s AlgorithmBellman-FordA*算法ReferencesWeighted Graphs通常,我们发现沿着图中的一条边移动会有一些相关的成本(或利润),例如边的距离,汽油的价格,花费的时间等等。我们称这之为加权图,称边值为权值。我们将之前的图定义扩展如下:加权图G由有序序列(V, E, W)组成,其中V和E是顶点和边,W是边的权值。V={a, b, c, d, e}E={(原创 2021-01-20 20:51:21 · 397 阅读 · 0 评论 -
算法和数据结构之Graphs
GraphsGraphsAdjacency ListsAdjacency MatrixGraph Search广度优先搜索(BFS)BFS算法深度优先搜索(DFS)DFS算法DFS穿越迷宫边的分类Cycle DetectionReferencesGraphs一个图由一组点V组成,这些点称为顶点或节点,以及一组边E,也称为弧,每条边都包含一对顶点。G=(V, E)无向图:V={v 1 , v 2 , v 3 , v 4 , v 5 , v 6 , v 7 }E={{v 1 , v 2 }, {v原创 2021-01-20 18:47:12 · 414 阅读 · 0 评论 -
算法和数据结构之哈希
Hashing哈希方程字典(Dictionaries)直接访问表Hashing With Chaining开放寻址法(Open Addressing)Probing使用开放寻址搜索开放寻址哈希函数Linear ProbingDouble Hashingh2的选择:Chaining 与Open Addressing使用哈希进行字符串搜索线性时间搜索Clever HashingKarp-Rabin字符串搜索References哈希方程哈希方程有很多情况,例如除留余数法:h(k) = k mod m如果原创 2021-01-20 15:56:46 · 402 阅读 · 1 评论 -
算法和数据结构之排2-4树详解
2-4 Trees2-4 树搜索2-4树插入数据到2-4树从2-4树中删除数据2-4树效率B-Tree搜索B-Tree插入数据到B-Tree从B-Tree中删除数据B+ TreeB* Tree2-3-4 TreeReferences2-4 树2-4 树具有以下性质:每个内部节点(根节点除外)都有2到4个子节点。每个节点中的键按从小到大的顺序排列。内部节点比它们的子节点少一个键。每个这样的键在概念上被定位在两个连续的子节点之间。它的值比它左边的子树中最大的键要大,比它右边的子树中最小的键要小。树原创 2021-01-19 17:11:57 · 1457 阅读 · 0 评论 -
算法和数据结构之BST, AVL树的详解
Trees二叉查找树(Binary Search Tree)构建BST树搜索BST树AVL树(AVL Trees)构建AVL树K-ary TreesReferences二叉查找树(Binary Search Tree)二叉查找树是一个有一个额外条件的二叉树。对于每个节点:左子节点的内容≤当前节点的内容。当前节点的内容≤右子的节点的内容。构建BST树让我们从以下值建立一个BST: 15, 33, 9, 13, 5, 21, 11root = insert_first(15)insert(原创 2021-01-19 15:39:11 · 604 阅读 · 0 评论 -
算法和数据结构之排序与堆详解
Sorting And Heaps选择排序(Selection Sort)冒泡排序(Bubble Sort)插入排序(Insertion Sort)快速排序(Quicksort)归并排序(Mergesort)堆(Heap)Siftup:Siftdown堆排序(Heapsort)Makeheap主要排序算法效率总结References选择排序(Selection Sort)扫描数组以找到最小的值。如果它不在x[0]中,那么把它换到那里。(x[0]现在是最小的)扫描数组的其余部分,寻找下一个最小的。原创 2021-01-18 21:29:23 · 230 阅读 · 0 评论 -
算法和数据结构之复杂度与寻找峰值
Complexity And Finding Peaks渐近表示法(Asymptotic Notation)Big-O(Big O)Big O定义算法分析的总体规划寻找峰值 (Peak Finding)线性搜索二分搜索渐近表示法(Asymptotic Notation)我们如何根据复杂度的顺序对算法进行比较和排序?以下是三种常用的复杂性度量标准顺序:Big OBig OmegaBig Theta其中Big O比起Big Omega和Big Theta更被广泛的接受和使用。Big-O(Bi原创 2021-01-18 17:54:07 · 540 阅读 · 0 评论