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

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/CST2020-4
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2020-4/homework/11824
    这个作业的目标 学会多种排序方法,进一步精进数组
    学号 20209068

    1PTA作业

    题目一

    题目二

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

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

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

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

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

    解法一


    解法二


    解法三


    算法区别:前面两种算法都是使用穷举法,即给出数组集其下标来甄别所需要数组,只是第二种解法在题意上判断上发生改变。
    第三种算法不太会,主要是对数据进行排序再进行二分。(数据最后没有出来)

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

    1:冒泡排序:比较两个数字的大小,如前大后小则交换二者顺序,再依次对比直至所有数字按由小到大的顺序依次排列。

    2:插入排序:将一个数字插入进一个有序的数组,并使得该数组仍然保持有序;使前面i个数字有序并插入i+1个数字使其有序。

    3:希尔排序:取得一个正整数,将间隔为这个正整数所有元素放入一个数组,在这个数组中进行插入排序;再取另外一个比前者小的正整数,再按上述操作重复进行。

    4:选择排序:通过循环找到最大值所在的位置,然后把最大值和最后一个元素进行交换,通过循环直到所有的数据有序。

    5:堆排序:将所有数据集合在一起形成一个数据大堆,将此堆顶端元素与低端元素进行交换并且不断循环以达到有序。

    6:快速排序:将需要排序的数据分成两等分,其中一份所有数据要小于另外一份,再对两份数据不断二分以达到有序。

    7:计数排序:将数据存入一个大数组中,并让这些数据以下标的形式存在于数据之中(这种方法没有看懂)。

    8:桶排序:将数组分到桶中,然后对这些桶子进行排序(这种方法也没有看懂)。

    4本周学习总结

    4.1学习进度条

    周数 本周所学内容 学习时间 还存在的问题
    第一周 计算机文件的相关知识 10h 上学期所学知识存在纰漏
    第二周 数组的运用以及各种排序法的认识 12h 对数组的使用还不是很熟练且对有些排序法还不能理解

    4.2累积代码行和博客字数

    4.3学习内容总结和感悟

    本周学习主要是关于数组的进一步掌握及各种排序方法的了解。
    对于数组的使用还是不能很熟练,关于数组的一些理论性知识还没有完全掌握。
    在时间的运用上还需提升。

    冒泡排序 :在一组数组中,对相邻的数据进行比较,并且按相对应的顺序进行交换,在此过程中,需要对每一个元素进行必要的比较,即在最后将会是最大的数,而最小的数就如同二氧化碳中的气泡浮到最上空。此过程最少需要交换共n-1次,但其交换次数也同样会随着数据的复杂度发生相应的改变。

  • 相关阅读:
    N皇后求解。万万没想到,只用一个一维数组就搞定了。还体现了回溯。
    图的存储与实现(一),使用邻接矩阵
    201671010139 2016-2017-2 《Java程序设计》关于java的初学体验总结
    题目常用解法
    【问题】如何批量导出AI文件里内嵌的图片
    安全算法基础(一)
    对安全的认知
    6月
    渗透--还是tp
    c++学习————VC报错解决方案(vc2013)
  • 原文地址:https://www.cnblogs.com/yuanchao666/p/14548789.html
Copyright © 2011-2022 走看看