20162309《程序设计与设计结构》第三周学习总结
学号 20162309《程序设计与数据结构》第3周学习总结
教材学习内容总结
一、查找:
1.什么是查找:查找是在一组项内找到指定目标或是确定目标不存在的过程。而我们的目标是尽可能高效地完成查找,高效的查找可以减少比较的次数,提高查找的效率。
2.查找的几种常见方法及使用:教材介绍了几种常见的查找方法,同时提出高效查找会减少查找所需的次数,以及比较是进行查找的先决条件之一,这需要调用Comparable类的对象数组,同时也需要实现Comparable接口。这里在网上查找了几个常见的查找方法:线性表、树表、哈希表。首先介绍线性表,分为顺序查找、折半查找、分块查找三种,要注意的是其中折半查找只适用于有序列表,且仅适用于顺序储存结构。原因:折半查找low会指向一个元素而high会指向相邻的下一个元素,然后low和high指向同一个元素,再然后low>high,循环结束,所以循环结束的条件为low<=high)。注意不要忘记最会返回-1。
3.典例:关于二分查找:
二、排序:
1.排序的定义;排序是按某种标准将一列数据按确定的次序重排的过程。所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。
2.几种常见的排序方法及其比较分析:插入排序是这样实现的:1、首先新建一个空列表,用于保存已排序的有序数列(我们称之为"有序列表")。2、从原数列中取出一个数,将其插入"有序列表"中,使其仍旧保持有序状态。3、重复2号步骤,直至原数列为空。其次是冒泡排序,插入排序是这样实现的:1、首先新建一个空列表,用于保存已排序的有序数列(我们称之为"有序列表")。2、从原数列中取出一个数,将其插入"有序列表"中,使其仍旧保持有序状态。3、重复2号步骤,直至原数列为空。
3.快速排序:快速排序是几种排序算法中相对高效的一种,实践证明,快速排序是所有排序算法中最高效的一种。快速排序是通过划分表,通过递归的方法对两个子表进行排序,进而完成对一组的排序。它采用了分治的思想:先保证列表的前半部分都小于后半部分,然后分别对前半部分和后半部分排序,这样整个列表就有序了。
教材学习中的问题和解决过程
- 问题1:快速排序的实际工作原理是什么,与其他排序方法有什么不同。
- 问题1解决方案:首先快速排序是对冒泡排序的一种改进,冒泡排序按照顺序进行排序,而快速排序将表完全分为两个割裂的部分,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
代码调试中的问题和解决过程
- 问题1:XXXXXX
- 问题1解决方案:XXXXXX
代码托管
(statistics.sh脚本的运行结果截图)
结对及互评
点评模板:
-
博客中值得学习的或问题:
-20162313苑洪铭同学的博客内容丰富而有深度,对教材内容理解很深入,同时拓展内容很多,对不同章节的串联和知识点的梳理都很很完善,有很多值得学习的地方。 -
代码中值得学习的或问题:
- 接口不匹配导致代码无法正常运行。
-
其他
本周结对学习情况
- [结对同学学号1]http://www.cnblogs.com/yuanhongming/
其他(感悟、思考等,可选)
通过本周的学习,我们开始逐渐从知识点的学习转到方法论上,上周的算法分析和本周的查找以及排序都是在java编程上的一些方法上的深入,难度上也在逐渐加大,同时也在很多方面上对上学期的知识进行了考核,将知识点联系起来,同时也需要更多实例的来进行考证,通过了解实例来进行学习。
xxx
xxx
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 60/60 | 1/1 | 15/15 | |
第二周 | 300/500 | 1/1 | 18/18 | |
第三周 | 500/1000 | 3/3 | 22/22 | |
第四周 | 300/1300 | 2/9 | 30/90 |
-
计划学习时间:22小时
-
实际学习时间:22小时