
算法和数据结构
文章平均质量分 75
Jifu_M
这个作者很懒,什么都没留下…
展开
-
算法和数据结构项目练习7-广度优先搜索(BFS)
Breadth First Search项目介绍代码实现 项目介绍 本项目实现广度优先搜索算法。 读取txt文件中第一行表示图中顶点数的单个整数N 读取txt文件中第二行开始是一对对的整数。每一对表示图中某条边两端的两个顶点。 图是无向的,因此节点编号为0 - N‐1。 程序先遍历图的顶点,从节点0开始,输出从这个节点可以到达的所有节点。 输出包含从算法获得的生成树。它应该被打印成树中有序的边列表。每条边的顶点应该按照BFS遍历的顺序列出。 输入的txt文件如下: 其中第一行是总的顶点数,后面的两列组原创 2021-02-17 22:25:40 · 337 阅读 · 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 · 284 阅读 · 1 评论 -
算法和数据结构项目练习5-哈希链表
Hash Chaining Table 项目介绍代码实现 项目介绍 本项目实现一个简单的哈希表。 txt文件包含一个整数值序列。读取它们并使用链接构造一个哈希表。 程序应该依次读取每个整数,并使用mod 100作为哈希函数计算其哈希值。因此,如果键是k,那么哈希值h(k) =kmod 100。(最简单的哈希函数) 完成计算后打印: 哈希表中空条目的数量。 最长链的长度。 不使用STL或等价的库。 哈希表示例图如下: 读取的文件示例: 代码实现 #include <ios原创 2021-02-17 16:55:44 · 294 阅读 · 1 评论 -
算法和数据结构项目练习4-BST排序
BST Sort项目介绍代码实现 关于二叉查找树(Binary Search Tree)的介绍可以看一下我的这篇文章: https://blog.youkuaiyun.com/Jifu_M/article/details/112827685 项目介绍 本项目实现BST排序并测试它的正确性。 被读取txt文件包含一系列整数值。读取它们并按照读取它们的顺序构造一个二叉搜索树。因此,读取的第一个数字将是树的根。 在构建树的过程中,您不需要平衡它。 当把最后一个值读入BST时,进行序遍历以升序输出值 在5个字符宽的字段中每一原创 2021-02-17 16:38:07 · 277 阅读 · 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 · 246 阅读 · 0 评论 -
算法和数据结构项目练习2-最小堆和最大堆
Implementing a Heap项目介绍 项目介绍原创 2021-02-17 14:51:04 · 253 阅读 · 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 · 201 阅读 · 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 · 439 阅读 · 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 · 692 阅读 · 0 评论 -
算法和数据结构之最短路径算法
Shortest Path AlgorithmsWeighted Graphs最短路径Dijkstra’s AlgorithmBellman-FordA*算法References Weighted Graphs 通常,我们发现沿着图中的一条边移动会有一些相关的成本(或利润),例如边的距离,汽油的价格,花费的时间等等。 我们称这之为加权图,称边值为权值。 我们将之前的图定义扩展如下: 加权图G由有序序列(V, E, W)组成,其中V和E是顶点和边,W是边的权值。 V={a, b, c, d, e} E={(原创 2021-01-20 20:51:21 · 458 阅读 · 0 评论 -
算法和数据结构之Graphs
GraphsGraphsAdjacency ListsAdjacency MatrixGraph Search广度优先搜索(BFS)BFS算法深度优先搜索(DFS)DFS算法DFS穿越迷宫边的分类Cycle DetectionReferences Graphs 一个图由一组点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 · 476 阅读 · 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 · 472 阅读 · 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 TreeReferences 2-4 树 2-4 树具有以下性质: 每个内部节点(根节点除外)都有2到4个子节点。 每个节点中的键按从小到大的顺序排列。 内部节点比它们的子节点少一个键。每个这样的键在概念上被定位在两个连续的子节点之间。它的值比它左边的子树中最大的键要大,比它右边的子树中最小的键要小。 树原创 2021-01-19 17:11:57 · 1819 阅读 · 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, 11 root = insert_first(15) insert(原创 2021-01-19 15:39:11 · 776 阅读 · 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 · 280 阅读 · 0 评论 -
算法和数据结构之复杂度与寻找峰值
Complexity And Finding Peaks渐近表示法(Asymptotic Notation)Big-O(Big O)Big O定义算法分析的总体规划寻找峰值 (Peak Finding)线性搜索二分搜索 渐近表示法(Asymptotic Notation) 我们如何根据复杂度的顺序对算法进行比较和排序? 以下是三种常用的复杂性度量标准顺序: Big O Big Omega Big Theta 其中Big O比起Big Omega和Big Theta更被广泛的接受和使用。 Big-O(Bi原创 2021-01-18 17:54:07 · 795 阅读 · 0 评论