C语言II博客作业02

| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/CST2020-3/ |
| ---- | ---- | ---- |
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-3/homework/11806 |
| 这个作业的目标 | 学习使用构造数据类型—数组进行数据处理,学习选择排序法和二分查找法 |
| 学号 | 20209004 |

二.本周作业

2.1 完成PTA作业,并给出编程题完成截图



2.2 题目:快速寻找满足条件的两个数
能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值,为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解。
解法一:采用穷举法,从数组中任意取出两个数字,计算两者之和是否为给定的数字。
解法二:对数组中的每个数字arr[i]都判别Sum-arr[i]是否在数组中。
解法三:对数组进行排序,然后使用二分查找法针对arr[i]查找Sum-arr[i]。
要求:
1.根据三种解法给出相应的代码,并给出测试数据。


2.请说明三种算法的区别是什么?你还可以给出更好的算法吗?
穷举法是对每一个数进行试验,对在范围内的每一个数都进行测试,一个一个举出来,计算量大,只适合于简单的计算
解法二相对解法一计算比较简单,在计算出sun-arr[i]之后就只需要与数组中的每一个数进行比较就行
解法三计算量最小,但难度比较大

2.3 请搜索有哪些排序算法,并用自己的理解对其中排序算法分别进行描述
排序算法:冒泡排序 选择排序 直接插入排序 希尔排序
冒泡排序:在数组中,从左往右将相邻的两个数进行比较和排序,让大的数往右靠
选择排序:先选出最小的一个数,然后与第一个数交换位置,然后在剩下的数中重复此操作
直接插入排序:将最后一个数插入到之前的某一个数前面,然后重复操作
希尔排序:每次插入一个数,使有序序列只增加一个节点,并且对下一个数没有提供任何帮助

2.4 请给出本周学习总结
1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第一周/3.1~3.8 六小时 216行 回顾上学期学习的内容,十二章有关文件的知识 对文件一点都不了解,不会从给定的文件中读取数据并进行数据处理
第二周/3.9~3.15 六小时 248 学习使用构造数据类型,学习数组和排序方法 不会复杂的排序
2 累积代码行和博客字数
3 学习内容
数组的使用,对数组中的数进行排序,构造数据类型
posted @ 2021-03-17 23:48  我必不可能秃头  阅读(52)  评论(0编辑  收藏  举报