
数据结构与算法
文章平均质量分 89
XJTUSE 数据结构与算法
爱吃芝麻汤圆
西交22级软工学子,云原生、后端开发、神经网络、机器学习、AI系统、机器人、算法等方向均有涉猎,欢迎关注,大家一起进步成长
展开
-
XJTUSE 数据结构与算法第四次作业——任务2
任务2题目为了确保每次迷宫的生成都是成功的,将不再采用任务 1 中的随机擦除边的生成方式,而是采用 Kruskal 最小支撑树的算法来实现迷宫生成。具体的执行步骤如下: 1. 为任务 1 中用来表示迷宫的图中的每一条边都随机生成一个权值(此时的图是一个带权图,所以在表示时可能会和任务 1 的表示有出入,请注意这个细节); 2. 利用 Kruskal 算法对步骤 1 中的图生成最小支撑树 T; 3. 将 T 中的每一条边相对应在迷宫中的边擦除掉,此时迷宫就生成了,这样生成的迷宫一定是成功的。原创 2024-11-02 01:23:56 · 432 阅读 · 0 评论 -
XJTUSE 数据结构与算法第四次作业——任务1
它接受三个参数,v1和v2分别表示边的起点和终点的下标,weight表示边的权值。同时,边的数量E增加1。整个算法是这样一个思路,对于第一问,我们需要生成抽象的图G和一个显示出来的图Puzzle,这个Puzzle实际数据类型是int[][],而图G本质也是邻接矩阵int[][],但是这两个矩阵也并不相同,两者有一定割裂;为了解决消除“边”的操作,我们还需要down和right两个int[][],当里面的数为1时,表示格子相邻,距离为1,当数为1000时表示格子不相邻,距离为1000无穷大。原创 2024-11-02 01:22:32 · 760 阅读 · 0 评论 -
XJTUSE 数据结构与算法第三次作业——任务3
因为堆是基于完全二叉树实现的,所以在插入和删除数据时,只需要在二叉树中上下移动节点,时间复杂度为 O(log(n)),相比有序数组的 O(n),效率更高。初始化smallestChildIndex变量为当前结点的索引,表示当前结点是目前最小的结点通过一系列的条件判断,找到当前结点的三个子结点中值最小的子结点,并将其索引赋给smallestChildIndex。然后,判断右子节点的索引是否在堆范围内,并且右子节点的值是否小于当前最小值节点的值。或者说,任意一个节点的值都大于等于(或小于等于)所有子节点的值。原创 2024-11-02 01:18:07 · 922 阅读 · 0 评论 -
XJTUSE 数据结构与算法第三次作业——任务2
算法与第一问也有很多相似之处,依旧是逐行读取,设置一个lineNumber记录行数,每行针对每一个单词进行提取,将提取出来的单词和对应的行数用Insert2方法插入树中即可,有一个关键点在于,如何屏蔽标点符号如“,”,“.”但是保留类似Tom。中的结点数据时,请认真思考记录行号的数据类型,如果可能,尽可能使用在之前实验中自己构建的数据结构,也是对之前数据结构使用的一种验证。具体的实现方法其实就是,当新加入的键值对的键在树中存在的话,那么不是更新对应的值,而是把值加入原来的值中。:'[a-z]+)?原创 2024-11-02 01:15:58 · 822 阅读 · 0 评论 -
XJTUSE 数据结构与算法第三次作业——任务1
任务1题目二叉检索树即 BST,是利用二叉树的非线性关系,结合数据之间的大小关系进行存储的一种用于检索数据的数据结构。一般情况下,对信息进行检索时,都需要指定检索关键码(Key),根据该关键字找到所需要的信息(比如学生信息里关键码是学号,而姓名等信息就是该关键码对应的信息),所以当提到检索时,都会有“键值对”这个概念,用(key,value)表示键值和对应信息的关系。 下面的二叉检索树的 ADT 在描述时,依然使用了模板类的方法,并且在这次描述中,使用了两个模板参数 K 和 V(这表明 key 和原创 2024-11-02 01:14:20 · 852 阅读 · 0 评论 -
XJTUSE 数据结构与算法第二次作业——任务3和任务4
任务3题目众所周知,栈虽然是一个操作受限的线性表,但是其用途却很广泛,栈的数据结构实现非常简单,因此我们只从应用层面熟悉栈。请完成下面三个子任务。 ①递归是一种解决很多复杂问题最简单的思想方法,而任何编程语言对递归程序的支持都是通过栈实现的。请利用课堂上讲解的“Hanoi 塔”问题的非递归转化方法完成对递归快速排序的非递归转化。 ②算术混合运算表达式的计算。表达式不仅能处理整数,还需要处理小数。表达式中涉及的运算符包括+、-、*、/、^(指数)。表达式可以包含括号(只包含圆括号)嵌套,因此要处原创 2024-11-02 01:09:59 · 789 阅读 · 0 评论 -
XJTUSE 数据结构与算法第二次作业——任务1和任务2
任务1题目在本次实验中,主要完成的任务是: 1、为指定的 List ADT(该 ADT 的具体要求请参见文件 List.java)实现三种数据结构:①使用顺序数组做为存储表示; ②使用单向链表做为存储表示; ③使用双向链表做为存储表示。不论哪种存储表示下实现的数据结构,实验中需要处理的数据类型都是 Character 类型。 2、用给定的输入数据文件验证所实现的数据结构是否正确。 3、使用表格列举每种数据结构下所实现的所有方法的时间复杂度。 为了方便进行测试验证,对 List原创 2024-11-02 01:04:39 · 839 阅读 · 0 评论 -
XJTUSE 数据结构与算法第一次作业——任务6
通过划分过程,确定基准元素的位置,然后根据基准元素的位置和k的大小关系,继续在左边或右边的子数组中寻找第k小元素。给出使用①中完成的快速排序在数据规模为 2的16次方的情况下,数据的重复率分别为 50%、60%、80%和 100%的运行时间的变化趋势图。② 给出使用①中完成的快速排序在数据规模为 2的16次方的情况下,数据的重复率分别为 50%、60%、80%和 100%的运行时间的变化趋势图。最坏情况下,快速选择算法的时间复杂度为O(N^2),出现在每次划分都选择到了最大或最小的元素作为基准元素的情况。原创 2024-11-02 01:35:07 · 784 阅读 · 0 评论 -
XJTUSE 数据结构与算法第一次作业——任务4和任务5
在最坏的情况下,即输入数组完全逆序,需要进行 n-1 轮遍历,每轮遍历都需要比较和交换相邻元素,因此总的比较和交换次数为 (n-1) + (n-2) + ... + 2 + 1 = n(n-1)/2。在最坏的情况下,即输入数组完全逆序,需要进行 n-1 轮遍历,每轮遍历都需要比较和交换相邻元素,因此总的比较和交换次数为 (n-1) + (n-2) + ... + 2 + 1 = n(n-1)/2。在最好的情况下,即输入数组已经有序时,插入排序的时间复杂度为 O(n),其中 n 是数组的长度。原创 2024-11-02 01:33:21 · 855 阅读 · 0 评论 -
XJTUSE 数据结构与算法第一次作业——任务2和任务3
将每一列视为一个数组,数组是有序的,只含有1和0两种数字,分别代表蓝色和白色,对于每一列,也就是每一个数组,需要找到它含1的个数,使用二分查找尤为方便,二分查找的时间复杂度是O(logn),这样总体的时间复杂度就是O(mlogn)。② 列中像素可以是白色或者蓝色,但在这种情况下,要么所有蓝色像素集中在从上到下,要么所有蓝色像素集中在从下到上,也就是说不会出现蓝色和白色相间的情形。方法中的循环,该循环遍历图像的每一列。已知一张图片是对某个事物横截面的扫描结果图,该图片的宽度是 m,高度是 n,图片的每一。原创 2024-11-02 00:54:31 · 822 阅读 · 0 评论