C语言II—作业02
1.作业头
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/SE2020-1 | |
---|---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-1/homework/11821 | |
这个作业的目标 | 掌握数组 | |
学号 | 20209112 |
一、本周教学内容&目标
第七章 数组 7.17.1 输出所有大于平均值的数
1.学生知道在哪种情况下可以使用构造数据类型—数组进行数据的处理
2.掌握用一维数组进行编程
3.掌握选择排序法和二分查找法
二、本周作业
2.1 完成PTA作业,并给出编程题完成截图
2.2 题目:快速寻找满足条件的两个数
能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值,为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解。
解法一:采用穷举法,从数组中任意取出两个数字,计算两者之和是否为给定的数字。
解法二:对数组中的每个数字arr[i]都判别Sum-arr[i]是否在数组中。
解法三:对数组进行排序,然后使用二分查找法针对arr[i]查找Sum-arr[i]。
要求
1.根据三种解法给出相应的代码,并给出测试数据。
测试数据 | 结果 | |
---|---|---|
5 8 4 4 2 6 9 | 4 4和2 6 |
测试数据 | 结果 | |
---|---|---|
5 4 4 0 6 2 3 | 4 0和6 2 |
1.根据三种解法给出相应的代码,并给出测试数据。
2.请说明三种算法的区别是什么?你还可以给出更好的算法吗?
2.3 请搜索有哪些排序算法,并用自己的理解对集中排序算法分别进行描述
常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。
按稳定性也可以分为稳定排序和不稳定排序
归并排序也称合并排序,是分治法的典型应用。分治思想是将每个问题分解成个个小问题,将每个小问题解决,然后合并。
选择排序是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到
排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所
有元素均排序完毕。
希尔排序,也称递减增量排序算法,希尔排序是非稳定排序算法。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。
先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行排序;
然后,取第二个增量d2
快速排序算法和合并排序算法一样,也是基于分治模式
2.4 请给出本周学习总结h
1 学习进度条
| 日期 | 学习时间 |
| ---- | ---- | ---- |
| 3.8-3.12 | 5h |
2 累积代码行和博客字数
3 学习内容总结和感悟
熟练掌握排序算法是今后学习的基础,需要下大功夫,课后需要多练,熟悉相关内容及题目,加快解题速度,拓宽解题思路,尝试不同办法。