20172312 2018-2019-1 《程序设计与数据结构》第五学习总结

20172312 2018-2019-1 《程序设计与数据结构》第五周学习总结

教材学习内容总结

第七章

查找

1.查找是一个在某个项目中寻找某一指定元素或者确定某一指定目标不存在的过程,对其进行查找的项目组有时也称为查找池 高效的查找会使该过程所做的比较操作次数最小化

2.两种不同的查找

类型                      特点

线性查找法          
                        从表头开始依次比较,直到找到目标或确定目标不存在。
                        不是特别高效,唯一的条件是必须能够依次考察每一个
                        元素,时间复杂度O(n


                        在一个已排序的项目组中,从列表的中间开始查找,
                        如果中间元素不是要找的指定元素,则削减一半查
二分查找法               池,从剩余一半的查找池(可行候选项)中继续以
                        与之前相同的方式进行查找,多次循环直至找到目
                        标元素或确定目标元素不在查找池中。
                        二分查找普遍要快得多,二分查找具有一个对数算法,
                        时间复杂度O(log2 n)
                        二分查找对于大型查找池非常有效率

排序

1.排序是基于某一标准,将某一个项目按照某个规定顺序排列,通常分为顺序排列(比较n^2次)和对数排列(比较nlog2n次),n较小时这两类算法之间几乎不存在实际差别

2.几种不同的排序

类型                      特点

冒泡排序                通过重复比较相邻元素且在必要时互换,从而完成排序
                        。将最大值“冒泡”到最后,然后再次扫描,重复该过程
                        ,直到所有元素冒泡到正确的位置,一共进行n-1轮


快速排序法              将列表进行分区,然后对分区进行递归式排序。先选择
                        一个列表元素作为分区元素,然后分割列表,使小于分
                        区元素的元素位于该元素的左边,剩下的位于右边,最
                        后再将该方法应用于两分区 


选择排序                通过反复将某一特定值放到它在列表中的最终已排序位
                        置来实现排序。


归并排序                算法通过将列表递归分成两半直至每一子列表都含有一
                        个元素,然后将这些子列表归并到一个排序顺序中分为
                        分解、合并两步

教材学习中的问题和解决过程

  • 问题1:选择排序和冒泡排序,插入排序的时间复杂度都为O(n^2),但插入排序>冒泡排序>选择排序
  • 问题1解决方案:冒泡排序每次比较相邻的两个元素进行调换位置,而选择排序算法并不在开始调换位置,先从头到尾扫描一遍,将所有元素扫描完毕后,再把霸气中最小的元素和首个元素对调,就把最小的放在了最前面,选择排序每扫描一遍数组,只需要一次真正的交换,而冒泡可能需要很多次

代码调试中的问题和解决过程

  • 问题1:如下图,利用已有的LinkedList类出现如下情况。
  • 问题1解决方案:

码云链接

上周错题总结

1.Interfaces cannot be derived from other interfaces.

A . True
B . False √
接口不能从其他接口派生
错误:接口同样可以从接口派生

2.Interfaces allow us to make polymorphic references, in which the method that is invoked is based on the type of the reference variable rather than the particular object being referenced at the time.

A . True
B . False √
接口允许我们进行多态引用,其中调用的方法基于引用变量的类型,而不是当时引用的特定对象
错误:接口同样允许引用特定对象

结对及互评

本周结对学习情况

  • 20172315
  • 20172318

结对学习内容

  • pp9.2 pp9.3

学习进度条

 代码行数(新增/累积)博客数量(新增/累积)学习时长(新增/累积)
目标 5000行 30篇 400小时  
第一周 22/22 1/1 12/12  
第二周 203/225 2/3 25/37  
第三周 574/799 1/4 15/52  
第四周 1283/1882 2/6 20/72  
第五周 986/2868 1/7 20/92

参考资料

蓝墨云班课

posted @ 2018-10-17 22:23  Silver银色  阅读(113)  评论(1编辑  收藏  举报