你永远不会独行

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次,但其交换次数也同样会随着数据的复杂度发生相应的改变。

posted @ 2021-03-28 14:20  mane  阅读(57)  评论(0编辑  收藏  举报