• C语言II博客作业02


    这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-1
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-1/homework/11821
    这个作业的目标 对数组有一个初步了解和了解排序的多种写法
    学号 20209111

    2.1 完成PTA作业,并给出编程题完成截图(5分)

    7-1 年龄与疾病

    7-2 选择排序法

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

    能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值,为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解。

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

    测试数据

    输入数据 输出数据
    5
    2 3 4 5 1 7
    2,3 4,1
    10
    4 8 9 6 4 5 2 5 8 3 7
    4,6 8,2 6,4 5,5 2,8
    3
    1 5 2
    1,2

    解法二:对数组中的每个数字arr[i]都判别Sum-arr[i]是否在数组中。

    输入数据 输出数据
    5
    1 4 5 2 7
    1,4
    5
    1 4 2 5 3
    1,4 2,3
    7
    3 1 5 7 2 8 4
    3,4 5,2

    解法三:对数组进行排序,然后使用二分查找法针对arr[i]查找Sum-arr[i]。

    |输入数据|输出数据|

    5
    1 4 2 5 3
    1,4 2,3
    10
    1 7 9 2 4 3 6 2 5
    1,9 3,7 4,6
    3
    1 5 2
    1,2

    2.请说明三种算法的区别是什么?你还可以给出更好的算法吗?(10分)
    1:穷举法枚举所有可能,思路简单,但运算量大。
    2:判断法加穷举,一定程度上比较稳定。
    3:二分法将元素一分为二,通过中值比较,然后左右改变的方法,缩小范围,计算更便捷。
    不能给出更好的算法

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

    1:冒泡排序是一类“交换”类排序方法,冒泡排序是稳定的排序,当初始序列为从小到大有序时,仅需要进行n-1次关键字比较,不需要移动任何记录,即可完成排序过程;当初始序列从大到小逆序时,需要进行n-1趟排序,进行n(n-1)/2次比较和交换。
    2:选择排序是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。
    3:快速排序是对冒泡排序的一种改进。快速排序的思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
    4:直接插入排序 每次循环,将当前的一个记录插入到之前已经插入排序好的有序子表中,从而得到一个新的、记录数增加1的有序子表。每次只处理一个数据,每次数据比较后,移动前面数据的位置,插入到合适位置。
    5:归并(合并)排序:是分治法的典型应用将每个问题分解成个个小问题,将每个小问题解决,然后合并。将一组无序数按n/2递归分解成只有一个元素的子项,一个元素就是已经排好序的了。然后将这些有序的子元素进行合并。
    6:希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。插入排序是将未排序的数字插入到已排序数列中,而希尔排序是将一个已排序的数列插入到另一个已排序的数列中。

    2.4 请给出本周学习总结(15分)

    1 学习进度条(5分)

    这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第一周 25 300 关于文件的应用 怎样获取代码完整的运行时间
    第二周 20 340 关于数组的初步运用 二维数组的应用

    2 累积代码行和博客字数(5分)

    3 学习内容总结和感悟(5分)
    学习总结

    感悟
    1:发现自己还有很多不足,有许多不会的地方。
    2:记忆力不够牢靠,应该再多多练习,把知识记住。
    3:应该制作一个计划,不要随心所欲。
    4: 去了解冒泡排序,并用自己的话进行说明(5分)
    冒泡排序:依次比较相邻的数据,即第一趟先比较第一个数和第二个数,较大数据放在后面,小数据放在前面,以此类推最大数据将逐步放到最后。

    例如:5 3 7 1 4
    首先 5与3比较,然后排序3 5 7 1 4
    然后 3 5 7 1 4——>3 5 1 7 4——>3 5 1 4 7第一轮排序结束;
    进行第二轮 3 5 1 4 7——>3 1 5 4 7——>3 1 4 5 7;第二轮结束;
    第三轮3 1 4 5 7——>1 3 4 5 7;
    
  • 相关阅读:
    Java编译器API简介
    liblinear和libsvm区别
    spark和hadoop比较
    maxout激活函数
    FTRL算法
    NLP里面好的学习资料
    阿里妈妈MLR模型(论文)
    FM的推导原理--推荐系统
    GBDT+LR simple例子
    深度学习最全优化方法---来源于知乎
  • 原文地址:https://www.cnblogs.com/Hemingyao/p/14546144.html
Copyright © 2020-2023  润新知