20162316刘诚昊 2017-2018-2 《Java程序设计》第三周学习总结
教材学习内容总结
1. 查找是在一组数据中找到指定的目标元素或判定组内不存在目标的过程,常用方法为线性查找和二分查找,而查找问题的大小由查找池中数据项的个数决定。
- [ 线性查找] 从一端开始依次扫描查找池中的数据项。
- [ 二分查找] 二分查找的前提是查找池数据有序。从数据中间开始查找,每次削减一半的范围量,直到找到目标元素或没有可行候选者。二分查找采用迭代方法,也可以使用递归,一般情况下,二分查找比线性查找更高效。
2. 排序是按照某些标准,将一组数据项按确定的次序重排。本章介绍五种排序算法。
- [ 选择排序] 反复地将具体的值放到它最终的有序位置。
- [ 插入排序] 反复将具体的值插入表的已有序的字表中。
- [ 冒泡排序] 反复比较相邻元素若有必要就交换他们的次序。
- [ 快速排序] 通过划分表,再递归地对子表排序。
- [ 归并排序] 将表平分直至每个子表中只含有一个元素,再将这些子表并为有序表。
选择排序、冒泡排序算法的最优、最差以及平均复杂度情形都是O(n^2)。
插入排序的最差、平均的复杂度情形为O(n^2),而最优为O(n)。
并归排序的最差、平均以及最优的复杂度情形都是O(nlog2n)
教材学习中的问题和解决过程
- 除了书中介绍的需要自己编辑的通用方法,是否有包提供直接的排序方法?
static void sort(type[] a)
采用优化的快速排序算法对数组进行排序。
参数:a 类型为int、long、short、char、byte、boolean、float或double。
- static int binarySearch(type[] a, type v )
static int binarySearch(type[] a, int start, int end,type v)
采用二分搜索算法查找值v。如果查找成功,则返回相应的下标值;否则,返回一个负数值r。-r-1是为保持a有序v应插入的位置。
参数: a
类型为int、long、short、char、byte、boolean、float或double的有序数组。参数: start
起始下标(包含这个值)参数:end
终止下标(不包含这个值)参数:v
同a的数据元素类型相同的值。
结对及互评
20162326齐力峰
齐力峰在本周督促我学习java,很有幸能有一位负责人的搭档。对于他的博客我觉得有点过于简洁,可以写的更详细一些。