C语言第2周作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/SE2020-3/ |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-3/homework/11822 |
这个作业的目标 | 增强对代码的理解 |
学号 | 20209162 |
一、本周教学内容&目标
第七章 数组 7.17.1 输出所有大于平均值的数
1.学生知道在哪种情况下可以使用构造数据类型—数组进行数据的处理
2.掌握用一维数组进行编程
ptA作业,并给出编程题完成截图(5分)
2.2 题目:快速寻找满足条件的两个数
能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值,为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解。
解法一:采用穷举法,从数组中任意取出两个数字,计算两者之和是否为给定的数字。
输入数据 | 输出数据 | 说明 |
---|---|---|
32120 | 2 0 | 有一组数据 |
431230 | 3 0 | 有一组数据 |
解法二:对数组中的每个数字arr[i]都判别Sum-arr[i]是否在数组中。
输入数据 | 输出数据 | 说明 |
---|---|---|
461234 | 3 3 2 4 | 有两组数据符合 |
36234 | 2 4 | 有一组数据符合 |
解法三:对数组进行排序,然后使用二分查找法针对arr[i]查找Sum-arr[i]。
输入数据 | 输出数据 | 说明 |
---|---|---|
32120 | 1 2 | 有一组数据 |
35123 | 2 3 | 有一组数据 |
2.请说明三种算法的区别是什么?你还可以给出更好的算法吗?(10分
穷举法:暴力破解法,就是把所有条件,相关情况统统考虑进去,让计算机进行检索,指导得出与之所有条件符合的结果
二分查找法:适合对已经排序好的数据集合进行查找,时间复杂度O,效率高。
判别法:判别分析又称“分辨法”,是在分类确定的条件下,根据某一研究对象的各种特征值判别其类型归属问题的一种多变量统计分析方法
2.3 请搜索有哪些排序算法,并用自己的理解对集中排序算法分别进行描述(5分)
1、冒泡排序
最简单的一种排序算法。假设长度为n的数组arr,要按照从小到大排序。
2、选择排序
严蔚敏版《数据结构》中对选择排序的基本思想描述为:每一趟在n-i+1(i=1,2,...,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录
3、插入排序
请给插入排序的基本思想就是将无序序列插入到有序序列中
2.4 本周学习总结(15分)
1 学习进度条(5分)
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点 | 目前比较迷惑的问题 |
---|---|---|---|---|
第三周 | 7h | 150 | 选择排序 | 对于课外知识欠缺 |
2 累积代码行和博客字数(5分)
3 学习内容总结和感悟(5分)
1.要对之前的学习内容进行复习
2.要预习接下来的知识
3.要细心查找错误,不要暴躁
4.要虚心请教。不懂就问,不要不懂装懂
3.冒泡排序
而冒泡排序是,每次都将数字最大者挑出,如此循环下去从而将一列数据有序化。因此得名冒泡排序。
(1)原理:比较两个相邻的元素,将值大的元素交换到右边
(2)思路:依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。
第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面。
比较第2和第3个数,将小数 放在前面,大数放在后面。