# 20162312 2017-2018-3 《程序设计与数据结构》第3周学习总结
教材学习内容总结
学习目标
- 探讨线性及二分查找算法。
- 探讨选择、插入、冒泡、快速及归并排序算法。
- 讨论算法的复杂度分析技术。
具体内容
-
查找 查找是在一组数据项中找到指定的目标元素,或是判定组内部存在目标的过程。
-
线性查找 线性查找是从一端开始以线性的方式扫描查找池。
-
二分查找 二分查找算法借助于查找池中数据的有序性,在每次比较时去除查找池中的大部分元素。
-
排序 排序是根据某些标准,将一组数据项按确定的次序重排,或为升序或为降序。
-
选择排序 算法重复这样的过程,分别将每个值放到排好序的最终位置,从而完成一组值的排序。
-
插入排序 算法重复地将一个具体的值插入到表中已有序的子序列中,从而完成一组值的排序。
-
冒泡排序 算法重复地比较表中的相邻元素,如果他们呈逆序则交换它们。
-
快速排序 算法根据任意选定的划分元素来对表进行划分,然后再递归地对划分元素两边的子段进行排序,从而完成对表的排序。
-
归并排序 递归地对分表,知道每个子表只含有一个元素时为止,然后再将子表按序合并,从而完成对表的排序。
-
希尔排序 把一个长序列分割为K个短序列进行高效的直接插入排序,形成一种“基本有序”的顺序; 再调用直接插入排序算法,对全体记录进行一个高效的排序。
教材学习中的问题和解决过程
- 问题1:对归并排序的复杂度计算不是特别理解。
- 问题1解决方案:我在网上查找了归并排序复杂度计算的相关资料:
代码调试中的问题和解决过程
- 无
代码托管
结对及互评
本周结对学习情况
-
结对学习内容
- 进行了查找排序方面的讨论
思考
对于查找排序的很多代码还要多看。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 6/6 | |
第二、三周 | 403/403 | 2/3 | 14/20 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:5小时
-
实际学习时间:6小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)