首页 > 编程语言 >CHC5223数据结构和算法

CHC5223数据结构和算法

时间:2024-03-30 19:34:37浏览次数:21  
标签:Java 必须 实现 CHC5223 算法 哈希 数据结构

CHC5223数据结构和算法2023-2024第2学期课业1价值40%的课程
个人工作学习成果学生将能够理解:
1.1数据结构
1.2数据结构的应用
1.3面向对象编程概念
1.4程序测试方法学生将掌握以下方面的技能:
2.1数据抽象
2.2数据结构的使用
2.3使用高级面向对象语言进行更高级的编程
2.4程序测试和文件编制学生将掌握以下方面的技能:
3.1自我管理
3.2学习
3.3沟通
3.4问题解决
3.5信息技术
投稿要求提交的课业应压缩为.zip文件,以下文件应为包含在压缩文件中:
•作为Microsoft Word文档的报告,包含您所有类的代码。文件名格式:学生ID+CCH5223_CW1_Report.docx
•包含项目的.zip文件:可运行的jar文件(如果可用)和所有程序的源代码(.java)。文件名格式:学生ID+CHC5223_CW1_Files.zip
一般要求所有编程都必须符合“Java惯例和编程指南”—请参阅模块Moodle站点。您必须将实现的关键源代码以文本或形式粘贴到报告中屏幕截图。介绍这个赋值的主题是数组、链表和哈希表。这样做的目的任务是利用一个双链表作为潜在机制。
要求基本规则完成所有任务后,必须创建一个可执行项目。一个Java类应该分别定义在一个.Java文件中。CHC5223数据结构和算法2023-2024第2学期第2页,共4页在报告中,每个任务的源代码以及相应的解释应该单独呈现。不遵守这些规则将导致零分。
任务1
必须在不使用任何现有实现的情况下设计和实现双链接列表在Java中。
➢ 双链接列表应该是可以存储字符串元素的通用数据结构数据类型。
➢ 必须创建一个Node类,该类表示双链接列表中的每个元素。
➢ 您必须创建一个LinkedList类,该类表示应包含的双链接列表用于插入、删除、访问特定元素、检查为空、返回大小的方法,以及您想要实现的其他操作。
➢ 插入操作应该在列表的前面完成。
➢ 实现应该包括错误处理,以处理诸如删除之类的错误空列表中的元素代 写CHC5223数据结构和算法,并且访问越界。
5个标记您必须在中对您的设计和实现给出明确的理由和详细的解释报告。5个标记
任务2您必须基于Java数组(而不是任何数组列表或现有的从Java库实现),并通过使用线性探索的方式。
➢ 必须使用用于冲突解决的线性探测方式。阵列的初始容量不应超过20。
➢ 您必须设计一个能够很好地处理字符串类型数据的哈希函数。散列函数设计应尽量减少碰撞的发生。您不能使用Java内置ashCode方法,不过您可以试用它。
➢ 该实现可以处理诸如空键或具有意外格式的键之类的错误。
➢ 实现应包括插入、搜索、删除和
访问键值对。
➢ 插入操作的实现可以根据如果哈希表太满,您设计的策略。
➢ 删除操作的实现可以处理密钥不在时的情况建立
➢ 该实现可以跟踪哈希表的负载因子,并在每次插入或删除。
➢ 搜索操作的实现可以搜索关键字并返回如果找到密钥,则为相应的值。
5个标记您必须在中对您的设计和实现给出明确的理由和详细的解释报告。HC5223数据结构和算法2023-2024第2学期第3页,共4页5个标记
任务3您必须基于链表设计和实现哈希表,并实现冲突通过使用单独的链接方式解决方案。
➢ 必须使用创建一个表示哈希表的ChainingHashTable类用于冲突解决的单独链接方式。
➢ 您必须使用任务1中设计的双链接列表来实现单独的链接方法单独链接的链表的容量不应超过8。
➢ 您必须设计一个能够很好地处理字符串类型数据的哈希函数。散列散列函数的策略应该与任务2的策略设计不同,并且应该地减少碰撞的发生。您不能使用Java内置的hashCode方法,尽管你可以尝试一下。
➢ 该实现可以处理诸如空键或具有意外格式的键之类的错误。
➢ 实现应包括插入、搜索、删除和访问键值对以及确定负载因子。
➢ 插入操作的实现可以有效地调整表的大小,如果散列
桌子太满了。
➢ 删除操作的实现可以处理密钥不在时的情况建立
➢ 该实现可以跟踪哈希表的负载因子,并在每次插入或删除。
➢ 搜索操作的实现可以搜索关键字并返回如果找到密钥,则为相应的值。
➢ 哈希表的实现可以根据您设计的战略。
5个标记您必须在中对您的设计和实现给出明确的理由和详细的解释报告。
5个标记
任务4您必须实现一个主程序,该程序同时使用LinearProbeingHashTable的对象
类和ChainingHashTable类。
➢ 您必须设计一组测试用例来评估两个的功能和正确性不同的哈希表。
•将哈希表的容量设置为一个小值,以便容易发生冲突。
•验证每个哈希函数是否正常工作。
•验证每个实施的方法是否正确工作。
•验证线性探测方式和独立链式方式的实施因为碰撞解决方案正在有效工作。
➢ 生成的哈希表的内部结构应清楚地显示为程序的执行结果。
4个标记CHC5223数据结构和算法2023-2024第2学期第4页,共4页您必须在中对您的设计和实现给出明确的理由和详细的解释报告。
➢ 演示程序的执行结果,包括生成的哈希表和
相应的测试数据。
➢ 对比分析基于同一组测试用例生成的两个哈希表鉴于
➢ 对比并分析您基于设计的两个哈希函数之间的差异给出了相同的测试用例集。
➢ 对两种不同的碰撞策略的影响进行理论基础和详细分析解决方案个标记
共40分相关报价“构建软件设计有两种方法:一种方法是使其简单到显然没有不足之处,另一种方法是使其变得如此复杂,以至于存在
没有明显的缺陷。第一种方法要困难得多。”Tony Hoare爵士教授1980年图灵奖讲座;ACM通讯24(2),(1981年2月):第75-83页请试着用第一种方法。我们鼓励要求进一步澄清这项任务的要求。请尽量在正常联系时间内这样做,避免在前一周寻求此类帮助你可以与其他人讨论课业中的要求和材料,但你创造的东西必须全部是你自己的作品。小心避免串通。在报告中声明除模块教学之外您收到的任何帮助团队反馈除了我们旨在在正常时间间隔内提供的书面反馈外,您将能够获得快速、简短、口头的形成性反馈,并帮助纠正你在
课程。

标签:Java,必须,实现,CHC5223,算法,哈希,数据结构
From: https://www.cnblogs.com/simplesky/p/18105891

相关文章

  • 算法模板 v1.10.5.20240330
    算法模板v1.1.1.20240115:之前历史版本已不可寻,创建第一份算法模板。v1.2.1.20240116:删除“编译”-“手动开栈”;删除“编译”-“手动开O优化”;修改“编译”-“CF模板”;删除“读写”;删除“图论”-“欧拉图”-“混合图”;删除“图论”-“可达性统计”;删除“数据类型”-“高精类”。......
  • 椋鸟数据结构笔记#4:栈与队列
    萌新的学习笔记,写错了恳请斧正。目录栈栈的实现队列队列的实现循环队列栈栈是一种特殊的线性表,是一种遵循后进先出(LIFO,LastInFirstOut)原则的数据结构。想象一下一摞盘子,你最后放上去的盘子会是你第一个拿掉的;同样地,在栈中,最后存入的数据会是第一个被取出来的。......
  • 《算法笔记》系列----质数的判断(埃氏筛法)
    目录一、朴素算法二、埃氏筛法1、与朴素算法对比2、算法介绍   3、例题即代码实现一、朴素算法 从素数的定义中可以知道,一个整数n要被判断为素数,需要判断n是否能被2.3.n-1中的一个整除。只2,3..n-1都不能整除n,n才能判定为素数,而只要有一个能整除n的数出现,n就......
  • 算法学习——LeetCode力扣动态规划篇1
    算法学习——LeetCode力扣动态规划篇1509.斐波那契数509.斐波那契数-力扣(LeetCode)描述斐波那契数(通常用F(n)表示)形成的序列称为斐波那契数列。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。也就是:F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2......
  • 滑动窗口算法(Sliding Window Algorithm)
    滑动窗口的核心就是,右指针给窗口扩容,直至抵达扩容限制条件或抵达边界;左指针则是给窗口缩容,以释放限制条件的约束,保证窗口继续向边界移动。需求讲解给定一个字符串str,请找出其中不含有重复字符的最长子串的长度。publicstaticintlengthOfLongestSubstring(Stringstr){......
  • 有关链表算法题的一些思考
    1.针对链表的特性(1)双指针的方法:因为不管是删除还是添加元素,都要涉及指定位置元素的上一个元素,因此需要设置前后两个指针来实现操作,同时针对题目特殊性也可能会有三指针的情况,如LeetCode82的去重,第一个指针作为删除操作的前一个指针,而后两个指针则用来查取重复范围/**......
  • COMP2017 9017 多类型链表数据结构
    COMP20179017课业2到期时间:2024年3月28日23:59这项任务相当于你最终评估的10%任务描述您的任务是创建一个多类型链表数据结构和与之交互的程序任务分为三个任务,必须按顺序完成。第一部分是链表的基本命令语法、创建、删除、查看等。第二部分是通过插入和删除元素来修改现有的列......
  • 四数之和算法讲解
    题目给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a],nums[b],nums[c],nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0<=a,b,c,d <na、b、c 和 d 互不相同nums[a]+num......
  • 图解《程序员面试常见的十大算法》及代码实现
    关注我,持续分享逻辑思维&管理思维;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》, 《做好面试准备,迎接2024金三银四》。推荐热榜内容:《C#实例:SQL如何添加......
  • 时间序列预测算法python全集合--深度学习
    共整理了60+个深度学习的时间序列预测算法,Python代码,包括多输入单输出,单输入单输出。深度学习算法主要为:LSTM,bilstm,grubigru,arima,ssa-arima,ceemdan,bp,elm,kelm,knn,mlp,slp,svm,XGBOOST,lightgbm,catboost,rf,lssvm,RNN,SARIMA,transformer等智能优化算法:SSA,WOA,AVOA,CS,DBO,FA,FWA,GW......