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学习内容总结和感悟
本周学习主要是关于数组的进一步掌握及各种排序方法的了解。
对于数组的使用还是不能很熟练,关于数组的一些理论性知识还没有完全掌握。
在时间的运用上还需提升。