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小时

posted @ 2017-09-23 20:10  邢天岳  阅读(299)  评论(2编辑  收藏  举报