冒泡排序算法问题

时间:2015-04-14 15:04:21

标签: algorithm time-complexity

我有这个问题,我很困惑,已经工作了一段时间,我似乎找不到任何帮助。

input a: array [1 .. n] of integer; n : integer;
temp  i, j : integer;
j <-- n;
while j ≥ 1
    do   I <-- 1;
        while   i ˂ j
            do
                if  a[i] ˃ a[j]  then swap a[i], a[j];
                i <-- i + 1;
            od;
        j < j – 1;
    od  
  1. 此算法会终止吗?

    我有答案,因为[i]和[j]永远不会交换。

  2. 该算法在O-notation中的最坏情况时间复杂度是什么作为排序问题的大小的函数?

  3. 此算法的前提条件是真值TRUE。算法的期望后置条件是:for i ˂ j, a[i] ˂ a[j], for i = 1, 2, . . . , n-1, j = 2, . . . , n

  4. 找到内部和外部循环的两个循环不变量,如果算法终止,您认为这将导致所需的后置条件。

    任何帮助将不胜感激!我想明白这一点!

1 个答案:

答案 0 :(得分:0)

我建议您先阅读此内容:http://en.wikipedia.org/wiki/Bubble_sort

关于你的问题。

1)是的,算法肯定会终止。它将完成双循环并完成。

2)最差的复杂性是O(n ^ 2)。

3)研究并写下来:http://en.wikipedia.org/wiki/Loop_invariant。所以不会完成你的整个作业。