C语言II—作业02
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/CST2020-3 |
|---|---|
| 这个作业要求在哪里 | <ps://edu.cnblogs.com/campus/zswxy/CST2020-3/homework/11806 |
| 这个作业的目标 | 知道在哪种情况下可以使用构造数据类型—数组进行数据的处理,掌握用一维数组进行编程,掌握选择排序法和二分查找法 |
| 学号 | 20208040 |
2.1 完成PTA作业,并给出编程题完成截图(5分)
2.2 题目:快速寻找满足条件的两个数
能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值,为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解。
解法一:采用穷举法,从数组中任意取出两个数字,计算两者之和是否为给定的数字。
解法二:对数组中的每个数字arr[i]都判别Sum-arr[i]是否在数组中。
解法三:对数组进行排序,然后使用二分查找法针对arr[i]查找Sum-arr[i]。
要求:
1.根据三种解法给出相应的代码,并给出测试数据。(15分)
解法—![image]()
![image]()
解法二![image]()
![image]()
解法三- ![image]()
![image]()
2.请说明三种算法的区别是什么?你还可以给出更好的算法吗?(10分)
前两种算法耗时比第三种方法长。
2.3 请搜索有哪些排序算法,并用自己的理解对集中排序算法分别进行描述(5分)
| 排序算法 | 描述 |
|---|---|
| 1.冒泡排序 | 冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序 |
| 直接插入排序 | 直接插入排序基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。 |
| 简单选择排序 | 简单选择排序是最简单直观的一种算法,基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序。 |
| 希尔排序 | 是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 |
| 快速排序 | 从数列中挑出一个元素,称为 “基准”所有元素比基准值小的摆放在基准前面所有元素比基准值大的摆在基准的后面(相同的数可以到任一边),在这个分区退出之后,该基准就处于数列的中间位置递归地把小于基准值元素的子数列和大于基准值元素的子数列排序。 |
| 2.4 请给出本周学习总结(15分) 这周学习了二分查找法和选择排序法,并回忆了数组的概念以及特点。 | |
| 冒泡排序 冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序 冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序 | |
| 1 学习进度条(5分) | |
| 周次 | 学习时间 |
| ----------------- | --------------- |
| 第一周 | 0 |
| 第二周 | 0 |
| 第三周 | 1 |
| 第四周 | 12 |
| 2累积代码行和博客字数(5分) | |
2![]() |
|
| 3 学习内容: | |
![]() |









浙公网安备 33010602011771号