20172315 2018-2019-1 《程序设计与数据结构》第五周学习总结
20172315 2018-2019-1 《程序设计与数据结构》第五周学习总结
教材学习内容总结
-
查找是在某个项目组中寻找某一指定目标元素,或者确定该组中并不存在该目标元素的这样一个过程。对其进行查找的项目组有时也称为查找池(search pool)。
-
查找分为线性查找和二分查找。
-
查找池中的项目越多,为了寻找该目标而做出的比较操作次数就越多。
-
在方法声明中,通过使用static修饰符就可以把它声明为静态的。
-
此时,含有返回类型和参数类型的方法,就可以使用泛型参数了。泛型声明必须位于返回类型之前,这样泛型才可作为返回类型的一部分
-
线性查找:从该列表头开始依次比较每一个值,直至找到该目标元素
-
二分查找是从排序列表的中间开始查找,如果没有在那个中间元素找到目标元素,则继续查找。
-
二分查找适用于已拍列的列表
-
线性查找算法具有线性时间复杂度O(n)。
-
二分查找具有一个对数算法且具有时间复杂度O(log2n)。
-
排序是这样一个过程,即基于某一标准,将某一组项目按照某个规定顺序排列。
-
与查找算法类似,基于效率排序算法通常也分为两类:顺序排序(squential sort),它通常使用一对嵌套循环对n个元素排序,需要大约n2次比较;以及对数排序(logarithmicsort),它对n个元素进行排序通常需要大约nlog2n次比较。与查找算法中一样,在n较小时,这两类算法之间几乎不存在实际差别。
-
选择排序(selection sort)算法通过反复地将某一特定值放到它在列表中的最终已排序位置,从而完成对某一列值的排序。
-
插入排序算法通过反复地将某一特定值插入到该列表某个已排序的子集中来完成对列表值的排序。
-
冒泡排序算法通过重复地比较相邻元素且在必要时将它们互换,从而完成对某个列表的排序。
-
快速排序算法通过将列表分区,然后对这两个分区进行递归式排序,从而完成对整个列表的排序。
-
归并排序算法通过将列表递归式分成两半直至每一子列表都含有一个元素,然后将这些子列表归并到一个排序顺序中,从而完成对列表的排序。
-
基数排序是基于队列处理的。
教材学习中的问题和解决过程
- 问题1:对于书上提及的各个排序算法效率的问题有点不太理解
- 问题1解决方案:
参考资料 - 问题2:书上的基数排序只有文字没有图片,不容易理解
- 问题2解决方案:我在网上找到了一张图片方便理解
代码调试中的问题和解决过程
- 问题1:pp9.3如何记录时间
- 问题1解决方案:百度之后:
参考资料
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
- 错题1及原因,理解情况
The elements of an _____________ are kept in whatever order the client chooses.
A . Ordered list
B . Unordered list
C . Indexed list
D . None of the above
无序列表中的元素按使用者所选择的任意方式排序。
- 错题2及原因,理解情况
The elements of an unordered list are kept in whatever order the client chooses.
A . True
B . False
正确答案: A
你的答案: B
无序列表中的元素按使用者所选择的任意方式排序。
结对及互评
点评模板:
- 博客中值得学习的或问题:
- 书上的内容总结很到位
- 对于代码上的问题挖掘不太充分
- 代码中值得学习的或问题:
- 代码详细明了
- 代码量较少
点评过的同学博客和代码
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 0/0 | 0/0 | |
第二周 | 800/800 | 2/2 | 18/18 | |
第三周 | 600/1400 | 3/5 | 22/40 | |
第四周 | 700/1300 | 3/8 | 22/62 | |
第五周 | 400/1700 | 3/11 | 22/84 |