问题:3,1,4,1,5,9,6,5 通过归并排序对它进行从大到小的排序 要进行多少次数组元素之间的比较?
第一步:分割
我们将数组分割成两部分,直到每个部分只有一个元素。
[3, 1, 4, 1]
和[5, 9, 6, 5]
[3, 1]
和[4, 1]
以及[5, 9]
和[6, 5]
[3]
和[1]
,[4]
和[1]
,[5]
和[9]
,[6]
和[5]
第二步:合并与比较
现在我们开始合并并进行比较。
合并 [3]
和 [1]
- 比较 3 和 1,结果是 1 在前。
- 合并结果:
[1, 3]
(1 次比较)
合并 [4]
和 [1]
- 比较 4 和 1,结果是 1 在前。
- 合并结果:
[1, 4]
(1 次比较)
合并 [5]
和 [9]
- 直接合并,结果是
[5, 9]
(1 次比较)
合并 [6]
和 [5]
- 比较 6 和 5,结果是 5 在前。
- 合并结果:
[5, 6]
(1 次比较)
继续合并
合并 [1, 3]
和 [1, 4]
- 比较 1 和 1,结果是 1 在前,取第一个 1。
- 比较 3 和 1,结果是 1 在前,取第一个 1。
- 比较 3 和 4,结果是 3 在前。
- 合并结果:
[1, 1, 3, 4]
(3 次比较)
合并 [5, 9]
和 [5, 6]
- 比较 5 和 5,结果是 5 在前,取第一个 5。
- 比较 9 和 5,结果是 5 在前,取 5。
- 比较 9 和 6,结果是 6 在前。
- 合并结果:
[5, 5, 6, 9]
(3 次比较)
最后合并
将 [1, 1, 3, 4]
和 [5, 5, 6, 9]
合并:
- 比较 1 和 5,结果是 1 在前。
- 比较 1 和 5,结果是 1 在前。
- 比较 3 和 5,结果是 3 在前。
- 比较 4 和 5,结果是 4 在前。
- 剩下的 5、5、6、9 直接合并。
- 合并结果:
[1, 1, 3, 4, 5, 5, 6, 9]
(4 次比较)
总比较次数
总比较次数为 4+3+3+4 次。因此,进行从小到大的排序需要14次比较。