Recursion 求带楼层和天花板的递归log算法的复杂性

Recursion 求带楼层和天花板的递归log算法的复杂性,recursion,time-complexity,big-o,Recursion,Time Complexity,Big O,我有一个难看的算法(是的,这是一门计算机科学课程,所以故意难看)。我们必须用不同的方法来发现它的复杂性。其中一种方法是向后替换。只要看看这个算法,它的复杂度显然会在(log(n-m))范围内,因为每次递归调用时实例大小都会除以3 Function WeirdSort(Array[m..n]) if (m < n) then if (A[m] > A[n]) then temp = A[m] A[m] = A[n]

我有一个难看的算法(是的,这是一门计算机科学课程,所以故意难看)。我们必须用不同的方法来发现它的复杂性。其中一种方法是向后替换。只要看看这个算法,它的复杂度显然会在(log(n-m))范围内,因为每次递归调用时实例大小都会除以3

Function WeirdSort(Array[m..n])
    if (m < n) then
        if (A[m] > A[n]) then
            temp = A[m]
            A[m] = A[n]
            A[n] = temp
        end if
        if (m + 1 < n) then
            index = floor((n - m + 1) / 3)
            WeirdSort(A[m..n - index])
            WeirdSort(A[m + index..n])
            WeirdSort(A[m..n - index])
        end if
    end if
end Function
函数古怪排序(数组[m..n])
如果(mA[n]),那么
温度=A[m]
A[m]=A[n]
A[n]=temp
如果结束
如果(m+1
但是我试图理解如何通过向后替换的方法得到这个答案。更具体地说,我一直在尝试处理大量的floor()和天花(),它们开始显示为阵列的大小,以及我应该如何处理它们

我的直觉告诉我,他们不能被置之不理,但也许这就是我应该做的


另外,考虑到如果数组已经排序,算法不会提前结束,我认为最坏和最好的情况是相同的,但这也可能是错误的。

很抱歉告诉您,但复杂性远远低于
log(x)

假设在最坏的情况下,
m=1
您所做的是对元素的2/3进行3次递归

T(n)=3*T(2n/3)+1


使用master theorm
==>
T(n)=O(n^2.7~)

感谢您的输入,当我学习其他技术时,我结束时意识到我的估计离我们很远。另一方面,你没有真正回答这个问题,这个问题是关于使用向后替换方法获得答案的过程。你知道吗?@KaitoKid不知道。我不熟悉这种方法。