2024-2025-1 20241318《计算机基础与程序设计》第六周学习总结

这个作业属于哪个课程 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
posted @ 2024-11-03 19:40  橙子1234  阅读(2)  评论(0编辑  收藏  举报