C语言II博客作业02
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/ |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11810 |
| 这个作业的目标 | 学会使用一位数组解决问题,掌握选择排序法和二分查找法 |
| 学号 | 20199259 |
本周作业(总分:50分)
1.1 完成PTA作业,并给出编程题完成截图





1.
解法一:
| 输入 | 输出 | 输出 |
|---|---|---|
| 7 | 1 | 6 |
| 2 | 5 | |
| 3 | 4 |
解法二:
| 输入 | 输出 | 输出 |
|---|---|---|
| 10 | 1 | 9 |
| 2 | 8 | |
| 3 | 7 | |
| 4 | 6 |
解法三:


| 输入 | 输出 | 输出 |
|---|---|---|
| 7, 1 3 2 6 4 5 9 7 8 10 | 3 | 4 |
| 2 | 5 | |
| 6 | 1 | |
| 4 | 3 |
2.
区别:
解法一代码比较简单,需要将数组中每个数两两与给定值去比较,判断两个值之和是否为给定值。
解法二代码较复杂,需要用给定值减去数组中的其中一个,再将所得的值去和剩下的值比较。
解法三用到了二分查找法和排序法,先要将数组中的数排序,然后再用二分查找法找到满足条件的数组元素,缩小了比较的范围,提高了运算效率。
无法给出更好的算法
插入排序:将待排序的无序数列看成是一个仅含有一个元素的有序数列和一个无序数列,将无序数列中的元素逐次插入到有序数列中,从而获得最终的有序数列
冒泡排序:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。每一趟排序后的效果都是讲没有沉下去的元素给沉下去。
希尔排序:希尔排序是把记录按下标的一定量分组,对每组使用直接插入算法排序;
随着增量逐渐减少,每组包1含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法被终止。
快速排序:快速排序算法的基本思想为分治思想。
先从数列中取出一个数作轴值(基准数)pivot;
根据基准数将数列进行分区,小于基准数的放左边,大于基准数的放右边;
重复分区操作,知道各区间只有一个数为止
2.4 请给出本周学习总结(15分)
1 学习进度条(5分)
| 日期 | 所花时间 | 代码行 | 学习内容 | 迷惑点 |
|---|---|---|---|---|
| 第一周 | 10h | 700行 | 文件的学习与使用 | 无 |
| 第二周 | 12h | 800行 | 数组和选择排序法和二分查找法 | 排序法的运用 |
3 学习内容总结和感悟(5分)

感悟:
1.本周学习了数组,掌握了一点点选择排序法和二分查找法的知识并且能运用解决一些问题。
2.在艰难的学习同时也在进步,学到了新的知识
3.要多提前复习,对于很多知识要练习几遍。
冒泡排序法
冒泡排序,是一种计算机科学领域的较简单基础的排序算法。其基本思路是,
对于一组要排序的元素列,依次比较相邻的两个数,将比较小的数放在前面,
比较大的数放在后面,如此继续,直到比较到最后的两个数,将小数放在前面,
大数放在后面,重复步骤,直至全部排序完成。

浙公网安备 33010602011771号