冒泡/合并排序算法类型:需要校正证明

2024-04-27 03:26:16 发布

您现在位置:Python中文网/ 问答频道 /正文

得到了这个算法,它是冒泡排序的一个变种。如何证明它的正确性?最好通过强烈的诱导。感谢任何指点!你知道吗


Tags: 证明算法正确性变种指点
1条回答
网友
1楼 · 发布于 2024-04-27 03:26:16

假设some_sort(A)的时间复杂度为T(n)。你知道吗

some_sort(Array a, a + mid)

时间复杂度:T(n/2)

some_sort(Array, b-mid, b)

时间复杂度:T(n/2)

some_sort(Array, a + (mid+1)//2, b - (mid+1)//2)

时间复杂度:T(n/2)


for i in range(n):
    some_sort(Array a, a + mid)                      # Will be called n times.
    some_sort(Array, b-mid, b)                       # Will be called n times.
    some_sort(Array, a + (mid+1)//2, b - (mid+1)//2) # Will be called n times.
T(n) = n * T(n / 2) + n * T(n / 2) + n * T(n / 2) + O(1)
T(n) = 3 * n * T(n / 2) + O(1)

利用马斯特斯定理我们得到:

T(n) = n^log2(3 * n)

相关问题 更多 >