回复

碎梦不是梦碎

2018年10月13日

我能肯定的是D,但是不理解B。我仔细想了一下。

关于归并可以这么解释。首先归并排序中 merge的任务是把两个有序数组合并为一个有序数组。假设A,和B为两个有序数组,合并为一个有序数组C,最好情况比较n/2次(n为数组C的长度,假设数组A和数组B等长,都为n/2),这种情况的前提条件是数组A中最小的元素比数组B中最大的元素要大。那么只要A[0]和B中所有元素都比较过一遍以后,数组A中的其他元素就不用比较了,所以比较了n/2次。最坏情况元素错落,A[0]和B[0]比,假设得出A[0]以后,A[0]先和B[1]比,B[1]再和A[1]比,A[1]再和B[2]比..........那就是n-1次。不知道自己分析的对不对,还是有点疑惑。我的疑惑是归并算法它的时间复杂度不管最好最坏都是一样的O(nlogn),它和比较次数难道没有关系吗?求大神回答。

0 0
回复
暂无回复
查看更多
我要回复