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 学习内容总结和感悟
熟练掌握排序算法是今后学习的基础,需要下大功夫,课后需要多练,熟悉相关内容及题目,加快解题速度,拓宽解题思路,尝试不同办法。

posted @ 2021-03-28 12:58  傲娇小纸威  阅读(44)  评论(0编辑  收藏  举报