zoukankan      html  css  js  c++  java
  • C语言II博客作业02

    1.作业头

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-3
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-3/homework/11822
    这个作业的目标 掌握用一维数组进行编程以及选择排序法和二分查找法
    学号 <20209159>

    一、本周教学内容&目标

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

    1.学生知道在哪种情况下可以使用构造数据类型—数组进行数据的处理

    2.掌握用一维数组进行编程

    3.掌握选择排序法和二分查找法

    二、本周作业(总分:50分)

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

    7-1 年龄与疾病 (10 分)

    某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理,按照0-18、19-35、36-60、61以上(含61)四个年龄段统计的患病人数占总患病人数的比例。

    7-2 选择排序法 (100 分)

    在主函数中首先输入一个整数N(1<N<=100),然后再输入N个整数存入数组中,然后用选择排序法对数组中的N个元素从大到小排序,最后输出数组所有元素。

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

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

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

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

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

    1.根据三种解法给出相应的代码,并给出测试数据。(15分)



    2.请说明三种算法的区别是什么?你还可以给出更好的算法吗?(10分)

    解法一:这是同学们最容易想到的,而且最易操作,但技术不高,且运行时间相对较长
    解法二:y是总和,把y拆成两个数相加,看着两个数是否在数组中,虽然方法与第一个没啥改变,但思考方式确实截然不同的。
    解法三:这种方法是代码编写三个中最难写的一种,但是,也是最具有意义的一种,它的编写是要先对数组进行一个排序,然后使用二分法查找,这种方法运行时间减少,提高了效率。
    判别法:判别分析又称“分辨法”,是在分类确定的条件下,根据某一研究对象的各种特征值判别其类型归属问题的一种多变量统计分析方法。
    

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

    排序算法:选择排序法,冒泡排序法,插入排序法,希尔排序法,计数排序法,归并排序法
    选择排序:选择排序是每一次从待排序的数据元素中选出最小的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
    冒泡排序:它重复地走访过要排序的数列,依次比较两个元素,如果他们的顺序错误就把他们交换过来。重复地进行直到没有再需要交换,说明该数列已经排序完成。(依次比较相邻的两个数,正序则不动,倒序则交换位置,如此循环,直到整个数组为有序为止)
    插入排序法:它通过构建有序序列,对于未排序的数据序列,在已排序序列中从后向前扫描,找到相应的位置并插入。
    希尔排序法:希尔排序在插入排序的基础上进行了改进,它的基本思路是先将整个数据序列分割成若干子序列分别进行直接插入排序,待整个序列中的记录基本有序时,再对全部数据进行依次直接插入排序。
    计数排列:不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。
    归并排序:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列;设定两个指针,最初位置分别为两个已经排序序列的起始位置;比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置;重复步骤3直到某一指针达到序列尾;将另一序列剩下的所有元素直接复制到合并序列尾。
    

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

    1 学习进度条(5分)

    周/日期 这周所花时间 代码行 学到的知识点简介 目前比较困惑的问题
    1/3.1-3.7 5h 200 文件数据的读写和处理 对于计算时间差的代码
    2/3.8-3.14 10h 284 一维数组,选择排序法和二分查找法 排列算法定义不明确,二分查找法不是很理解

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

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

    学习的知识越来越深奥,有待继续提高
    应该多花时间学习算法
    

    4 去了解冒泡排序,并用自己的话进行说明(5分)

    比如说升序排列,那么就依次相邻两个数比较大小,然后把大的数放在后面。

  • 相关阅读:
    English 2
    速算24点
    心理学1
    从微服务到函数式编程
    034 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 01 流程控制概述
    033 01 Android 零基础入门 01 Java基础语法 03 Java运算符 13 运算符和表达式知识点总结
    032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例——闰年问题
    031 01 Android 零基础入门 01 Java基础语法 03 Java运算符 11 运算符的优先级
    030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符
    029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑“非”运算符
  • 原文地址:https://www.cnblogs.com/oyxm/p/14581618.html
Copyright © 2011-2022 走看看