2024-2025-1 20241408陈烨南《计算机基础与程序设计》第六周学习总结
这个作业属于哪个课程 | 2024-2025-1-计算机基础与程序设计) |
---|---|
这个作业要求在哪里 | https://www.cnblogs.com/rocedu/p/9577842.html#WEEK06 |
这个作业的目标 | Polya如何解决问题、简单类型与组合类型、复合数据结构、查找与排序算法、算法复杂度、递、代码安全 |
作业正文 | 本博客链接 |
教材学习内容总结
这一周两本书的内容有很多重复的,主要讲的就是一个算法的流程,并以伪代码的形式向我们展现出来。
《计算机科学概论》
这本书中,章节题目为“问题求解与算法设计”,主要告诉我们要在代码编写的过程中寻找自己熟悉的部分,利用分治法将其分解为多个小问题,向我们展现了排列、有序数组、无序数组几个概念,并介绍了二分检索、选择排序、冒泡排序等方法。
这一章的核心是对于问题的的解决,流程为“分析问题”“列出主要任务”“编写其余的模块”“根据需要进行重组与改写”。
《C语言程序设计》
本章主要介绍了选择控制结构,分为条件运算符、条件表达式、多分支控制、多路选择,学习了switch、if等多种判断方法、
教材学习中的问题和解决过程
Q:冒泡排序到底有多少使用价值?
A:冒泡排序是一种简单的排序算法,它通过重复遍历要排序的数列,比较每对相邻元素的大小,并在必要时交换它们的位置。这个过程会重复进行,直到没有再需要交换的元素为止,这意味着数列已经排序完成。尽管冒泡排序在实际应用中不如一些更高效的算法(如快速排序、归并排序等)常用,但它仍然具有一定的使用价值:
-
教学价值:冒泡排序是计算机科学教育中常用的入门算法之一,因为它的逻辑简单,易于理解和实现。它有助于初学者理解基本的排序概念和算法分析。
-
稳定性:冒泡排序是一种稳定的排序算法,这意味着相等的元素在排序后仍然保持它们原始的顺序。在某些需要保持相等元素顺序的应用中,这是有用的。
-
渐进最优:在最好的情况下(即数列已经是有序的),冒泡排序只需要遍历一次数列就能完成排序,时间复杂度为O(n)。
-
适应性:冒泡排序可以在排序过程中提前结束,如果数列在排序过程中已经变得有序,那么可以提前终止算法,这减少了不必要的比较。
-
原地排序:冒泡排序不需要额外的存储空间,它是一种原地排序算法,这使得它在空间效率上有一定的优势。
-
简单性:在某些情况下,如果数列的大小非常小,冒泡排序的简单性可能使其成为合适的选择,因为它的常数因子较小。
-
并行处理:冒泡排序可以很容易地并行化,每个处理器可以同时对不同的元素对进行比较和交换,这在多核处理器上可能提高效率。
尽管冒泡排序在处理大数据集时效率不高(时间复杂度为O(n^2)),在实际应用中,更复杂的排序算法(如快速排序、归并排序等)通常更受青睐,因为它们具有更好的平均和最坏情况时间复杂度。然而,冒泡排序的简单性和稳定性使其在特定场景下仍然具有一定的使用价值。
基于AI的学习
好的,我们将焦点放在单分支和双分支的选择控制结构上。让我们开始苏格拉底式的对话。
-
第一个问题:当你提到“单分支、双分支的选择控制结构”,你如何理解这些术语在编程中的含义?
[我的回答:] 单分支选择控制结构通常指的是程序中只有一个条件需要检查的情况,如果条件为真,则执行特定的代码块。而双分支选择控制结构则涉及到两个可能的路径,条件为真时执行一个代码块,条件为假时执行另一个代码块。这类似于日常生活中的“如果...那么...”和“如果...那么...否则...”的决策过程。
-
第二个问题:在编程中,你为什么会选择使用单分支而不是双分支,或者反之?
[我的回答:] 选择使用单分支还是双分支通常取决于具体的逻辑需求。如果只需要在条件满足时执行操作,单分支就足够了。而双分支则在需要根据条件的真假执行不同操作时更为合适。这种选择体现了编程中的逻辑分支和决策制定。
-
第三个问题:你能给我一个单分支选择控制结构的例子,并解释它在实际编程中的应用吗?
[我的回答:] 一个常见的单分支选择控制结构的例子是调试信息的输出。例如,如果程序处于调试模式(一个布尔变量为真),则输出特定的调试信息。这在实际编程中用于在开发过程中提供额外的信息,而在生产环境中则不输出这些信息,以避免性能损失和信息泄露。
-
第四个问题:在双分支选择控制结构中,你如何决定条件的真假分支应该执行哪些操作?
[我的回答:] 决定条件的真假分支应该执行哪些操作通常基于程序的业务逻辑。例如,在一个登录系统中,如果用户名和密码匹配,则允许用户登录;如果不匹配,则显示错误消息。这种决策过程需要对程序的整体功能和用户需求有深入的理解。
-
第五个问题:在使用选择控制结构时,你如何确保代码的可读性和维护性?
[我的回答:] 确保代码的可读性和维护性,可以通过使用清晰的条件表达式、合理的代码缩进、有意义的变量命名以及适当的注释来实现。此外,避免过长的代码块和复杂的嵌套条件也是提高代码质量的关键。
-
第六个问题:在你学习单分支和双分支选择控制结构的过程中,有没有遇到特别困难的概念或问题?你是如何克服这些困难的?
[我的回答:] 学习过程中可能会遇到的困难包括理解条件表达式的逻辑、处理复杂的嵌套条件以及优化条件判断的性能。克服这些困难通常需要实践、阅读相关文档和示例代码,以及与他人讨论和交流。
学习进度条
| 代码行数(新增/累积)| 博客量(新增/累积)|学习时间(新增/累积)|重要成长|
| -------- | :----------------😐:----------------😐:---------------: |:-----😐
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第6周 | 200/200 | 2/28 | 20/88 | |