我理解合并排序的概念。但我很难分析合并排序的时间复杂性。我知道所有情况都是o(n log n),即最坏情况,平均情况和最佳情况。但我无法理解它是如何o(n log n)。在每次迭代中,我们将两次分割列表。所以它更像是在每一步增加递归调用。那么它将如何成为o(n log n)。
任何人都可以解释一下吗,请你解释一下o(log n)?
答案 0 :(得分:3)
可以把它想象一下128张纸,上面写着数字。第一步是安排相邻的床单。你必须触摸/移动所有128张才能做到这一点。下一步是将对合并为四个一组。再次,你需要移动所有128张表来做到这一点。然后你组成8组,16组,32组,64组,最后是128组。在每一步中你必须移动所有128张。您会注意到总共有7个级别。这是log(128)。因此,您在7个级别移动128张,或者O(128 * 7),即O(n log n)。