C语言II博客作业02
这个作业属于哪个课程 | 计科三班 |
这个作业要求在哪里 | 作业要求 |
这个作业的目标 | 熟练对文件的应用,巩固上学期所学 |
学号 | 20209017 |
1.完成PTA作业,并给出编程题完成截图
1.1
1.2
2.快速寻找满足条件的两个数
2.1根据三种解法给出相应的代码,并给出测试数据
解法一
解法二
解法三
2.2请说明三种算法的区别是什么?
算法一是直接一个一个的进行比较。
算法二是将最后相加得到的值减去一个值用得到的结果在数组中一一比较。
算法三是先将数组中的数据进行排序,在将其分为两组,用最后相加得到的值减去一个值得到的结果与平均值进行比较,再去比对。
2.3请搜索有哪些排序算法,并用自己的理解对集中排序算法分别进行描述
1. 插入排序
直接插入排序:将第一第二个数据排好序,再将之后的数据插入到之前有序的数组中。
希尔排序:数组中有n个数据。K=n/2,将下标差值为k的数分为一组,将其变为有序数组,再令k=k/2,重复之前做法,直至k=1,再将其插入。
2. 选择排序
简单选择排序:选择最小的数与第一个数交换,再在剩余的数中寻找最小,在与第二个数交换,重复此举至最后一个数。
堆排序:将待排序序列构建成一个大顶堆(存入数组中),将堆顶元素与最后一个元素交换。
3. 交换排序
冒泡排序:对于一组要排序的元素列,依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。与简单选择排序相比,冒泡排序是比较一个就交换,而简单原则排序是所有的比较完再交换。
快速排序:对数据进行分割,分割成两部分后,再进行排序,再在之前分割的数组里继续分割排序分割至只有一个数据。
4.归并排序
归并排序: 归并将有序的数列进行合并得到一整个有序数列。
5. 基数排序
基数排序:使用一个额外的数组,其中第i个元素是待排序数组中值等于的元素的个数。然后根据数组来将中的元素排到正确的位置。
3.请给出本周学习总结
3.1学习进度条
周/日期 | 这周所花时间 | 代码行 | 学到的知识点简介 | 目前比较困惑的问题 |
---|---|---|---|---|
第一周 | 约11小时 | 218 | 测试程序,文件 | 对文件这一块不理解,只是照本宣科 |
第二周 | 约10小时 | 101 | 查找数的解法三出来的结果会有重复 |
3.2累计代码行和博客字数
时间 | 博客字数 | 代码数 |
---|---|---|
第一周 | 1031 | 219 |
第二周 | 1088 | 101 |
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
1.对数组有了了解,但目前对于定义变量数组不太清楚。
2.通过本次作业知道了很多算法。
3.对二分法的算法还不太熟悉。