C语言||博客作业02

作业头

🙀

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2020-4/homework/11824
这个作业的目标 掌握用一维数组进行编程,掌握选择排序法和二分查找法
学号 20209053
一.本周教学内容&目标

第七章 数组 7.17.1 输出所有大于平均值的数

二.本周作业

💊

2.1 完成PTA作业,并给出编程题完成截图




2.2 题目:快速寻找满足条件的两个数

解法一:采用穷举法,从数组中任意取出两个数字,计算两者之和是否为给定的数字。

输入数据 输出数据
3 1+2 2+1
4 1+3 2+2 3+1
解法二:对数组中的每个数字arr[i]都判别Sum-arr[i]是否在数组中。

输入数据 输出数据
6 1 5 2 4 0和1 2和3
解法三:对数组进行排序,然后使用二分查找法针对arr[i]查找Sum-arr[i]。

输入数据 输出数据
10 0 1 2 3 4 5 6 7 8 9 1 and 9 2 and 8 3 and 7 4 and 6
三种算法的区别:
1.穷举法是将数字一一列举出来,思路比较简单,但运算量较大,解题效率不高。
2.二分法是要在有序的数组中查找特定元素,将所有元素一分为二,找到中值,然后逐步缩小范围,效率较高。
3.暂无更好的算法。

2.3请搜索有哪些排序算法,并用自己的理解对集中排序算法分别进行描述

1.归并排序:是分治法的典型应用,将每个问题分解成个个小问题,将每个小问题解决,然后合并。
2.选择排序:是一种简单直观的排序算法,首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
3.冒泡排序:重复地走访过要排序的元素列,依次比较两个相邻的元素,重复地进行直到没有相邻元素需要交换,则说明排序完毕。
4.插入排序:在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。
5.快速排序:.根据基准数将数列进行分区,小于基准数的放左边,大于基准数的放右边;
重复分区操作,知道各区间只有一个数为止。
6.堆排序:把最大堆堆顶的最大数取出,将剩余的堆继续调整为最大堆,再次将堆顶的最大数取出,这个过程持续到剩余数只有一个时结束。
7.希尔排序:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序:
8.计算排序:将输入的数据值转化为键存储在额外开辟的数组空间中....(无语 最看不懂的)
9.桶排序:将数组分到有限数量的桶子里,然后对每个桶子再分别排序,最后将各个桶中的数据有序的合并起来。

2.4本周学习总结

1.学习进度条
周/日期 这周所花的时间 代码行数 学到的知识简介 目前比较迷惑的问题
第一周/3.1~3.7 8小时 238 读取并利用文件里的数据 如何读取文件
第二周/3.8~3.14 10小时 240 数组、排序算法 已用排序算法使用不熟练
2.累积代码行和博客字数

3.学习内容总结和感悟

1.遇到不懂的,不会的要多去钻研,通过查阅资料弥补自己的不足。
2.慢慢理解了对数组的运用,数组在很多时候能更加方便解决问题。
3.学习的东西逐渐深入,要学会自学,各种搜索引擎都能用上。
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
posted @ 2021-03-28 13:26  豪起来了嘛  阅读(49)  评论(0编辑  收藏  举报