【发布时间】:2016-01-25 18:51:41
【问题描述】:
假设输入列表已经按升序排序。在这种情况下,比较的次数是多少。如果输入列表按元素数量倒序排序会怎样。
如果列表已经排序,我认为需要 (n/2)lg n。例如如果我们有一个类似 1,2,3,4,5,6,7,8,9,10 的列表,它已经排序,那么它将被划分为 (1,2,3,4,5) 和 ( 6,7,8,9,10) 部分。此外,该列表将分为 (1,2,3) 、 (4,5) 、 (6,7,8) 、 (9,10) 等。现在由于叶子已经排序,我们必须在合并期间仅将第一个列表的第一个元素与其他列表的所有元素进行比较。例如在 (1,2,3,4,5) 和 (6,7,8,9,10) 的情况下,我们将 1 与第二个列表中的所有元素进行比较,类似地 2 与所有元素进行比较,依此类推。因此,在级别 1 我们有 n/2 比较,在级别 2 我们有两个 n/4 比较(总共 n/2)等等。由于有 lg n(base 2) 个级别,我们将进行 (n/2)*lg n 个比较。
【问题讨论】:
-
你怎么看?您能向我们展示您到目前为止所做的尝试吗?
-
我认为 (n/2)lg n 表示已经排序的列表。
-
对我来说似乎是正确的。
标签: sorting