MERGE SORT的DIVIDE步骤的基本困惑

时间:2018-08-10 07:01:11

标签: algorithm sorting mergesort

合并排序中,每个元素的“除法”步骤的运行时间在CLRS中被视为 theta(1),即恒定时间


我的困惑是: 假设 divide 是一项基本运算,并且需要恒定的时间C1。 现在,考虑伪代码
enter image description here

现在,第一次调用 MERGE-SORT 函数时,将需要 C1 来划分输入(注意:-我们不考虑时间通过合并功能) 并且此 MERGE-SORT 将输入的输入 lg(n)时间除以),或者我们可以称其为lg((n))次 因此,划分输入的总时间应为 C1 * lg(n) 就是 theta(lg(n))


但是在CLRS中: enter image description here

如果我们认为“划分步骤” 将需要 theta(1)时间(总体而言)

注意:lg已登录到以2为底的

P.S。 -对不起,因为我的英语还没到那个标准。欢迎进行修改:)

2 个答案:

答案 0 :(得分:0)

对合并排序的基本理解是这样的-考虑一下,我们已经将数组的两部分进行了排序。我们可以在O(n)时间内将这两个部分合并。

从数学上讲,“合并排序”函数针对其一半(“分割”步骤)两次调用自身,然后将这两个部分合并(“征服”步骤)。

Recurrence Relation

现在,如果我们通过使用适当的数学分析来解决此递归关系,则得到的关系如下:

Solution to Recurrence

这清楚地表明,花费O(1)时间的DIVIDE步骤称为n次,而合并所有各种大小的较小部分的总合并工作量为O(n logn),这是上限。因此,O(n logn)的复杂性(感谢Yves Daoust的澄清)。

但是,“除法”步骤仅花费O(1)次,即O(n)次。因此,除法的工作量为O(n)。

答案 1 :(得分:0)

除法的一步确实需要恒定的时间O(1)

但是与您的想法相反,总共有Θ(N)个部门(1+2+4+8+...N/2)。

无论如何,由于合并的总工作量为Θ(N Log N),因此不予考虑。