全部每周作业和视频思考题答案和解析 见 浙江大学 数据结构 思考题+每周练习答案
题目一:
不行,因为存在最后一列比较短而导致判断错误,其实这个已经执行了两次归并了。
所有连续有序子列的最短长度去掉最后一个子列?
比如还是用上面类似的例子
4 2 1 3 13 14 12 11 8 9 7 6 10
1 2 3 4 11 12 13 14 6 7 8 9 10
可以看到,前8个是有序的,后面四个是有序的,然后还剩一个10。做2次归并和做3次归并,得到的效果是一样的,也就是说最小的有序子列可以是4,也可以是8,这就有误区。
题目二:保证可以区分插入或者归并两种算法的最小N应该是
-
A. 1
-
B. 2
-
C. 3
-
D. 4
2个数的时候,比如 2,1,一次插入以后变成1,2,一次归并以后也是1,2,不可以。
3个数的时候,比如3,2,1,一次插变为2,3,1 ,一次归并后也是 2,3,1。因为插入排序只是比较前两个,而归并排序也只对前两个进行归并,第三个数不进行处理,所以仍然分不开。4个数的时候就可以了,因为归并排序会同时归并第3个和第4个数。
选D。
好像就两个可以记录的思考问题。