这个作业属于哪个课程 | https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP |
---|---|
这个作业要求在哪里 | https://www.cnblogs.com/rocedu/p/9577842.html#WEEK06 |
这个作业的目标 | <Polya如何解决问题 |
简单类型与组合类型 | |
复合数据结构 | |
查找与排序算法 | |
算法复杂度 | |
递归 | |
代码安全> | |
作业正文 | https://i.cnblogs.com/posts/edit;postId=18523804 |
教材学习主要内容
《计算机科学概论》:阅读本章,能了解到在学习了低级语言和人工语言后,要开始能从整体宏观解决问题,知道了计算机问题的求解是由,分析和说明、算法开发、实现和维护阶段,算法讲述了几种常见算法:冒泡、快排,插排、顺搜、二分法...
《C语言程序设计》:算法的描述方法、单分支、双分支、多分支选择控制结构,条件语句、用于多路选择的 switch 语句,break 语句在switch语句中的作用、关系运算符、条件运算符、运算符和位运算符。
学习中的问题及解决过程
问题一:在运用Polya的解决问题方法时,如何确保在“制定计划”这一步能想到有效的解决办法呢?
解答:在运用Polya方法的“制定计划”步骤时,要确保想到有效的解决办法可以从以下几点入手。
首先,要充分调动已有的知识储备,回忆之前遇到过的类似问题以及它们的解法。比如在解决数学函数最值问题时,就回想之前学过的求导、配方等相关方法在类似题型中的运用。
其次,尝试对问题进行多种方式的转化或分解。将复杂问题拆分成若干个相对简单的子问题,分别寻找解决思路。例如面对一个大型的编程项目需求,可分解成数据输入、数据处理、结果输出等子问题来考虑解决方案。
再者,通过画图表、列举示例等具体手段来直观呈现问题的关键要素和关系。比如在解决行程问题时,画出路程、速度、时间关系的示意图,能更清晰地看出各要素之间的联系,从而启发解决思路。
最后,不要局限于一种思路,可以大胆尝试不同的方向和方法,经过不断的尝试和分析,就更有可能找到有效的解决办法来推进问题的解决。
问题:在编程中,什么时候适合使用链表这种复合数据结构而不是数组呢?
问题二:在编程中,什么时候适合使用链表这种复合数据结构而不是数组呢?
解答:
在以下几种情况适合使用链表而非数组:
数据动态插入与删除频繁时
链表在插入和删除元素操作上相对更高效。比如要在一个有序的数据集合中频繁插入新元素以保持有序性,使用链表只需调整相关节点的指针即可,时间复杂度通常为O(1)(在已知插入位置的理想情况下)。而数组若要插入新元素,可能需要移动大量后续元素来腾出空间,平均时间复杂度为O(n),n为数组元素个数。
数据大小不确定时
如果一开始不确定要存储的数据量有多少,链表更合适。因为链表可以动态地分配内存来添加新节点,不需要像数组那样预先开辟固定大小的内存空间。例如在处理一个不断接收新数据的流,且不知道最终数据总量的情况,链表能灵活适应数据量的增长。
需要频繁进行数据的合并或拆分操作时
链表便于进行数据的合并与拆分操作。比如有两个有序链表,要将它们合并成一个新的有序链表,通过调整指针就可以相对高效地完成。而对于数组,进行类似的合并拆分操作往往涉及到大量元素的复制和移动,较为复杂且效率不高。
所以,当面临上述这些情况时,链表这种复合数据结构会比数组更具优势,更适合被选用。
基于AI的学习
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |