使用冒泡排序对名称进行排序的算法的时间复杂度

时间:2016-06-27 09:50:48

标签: algorithm data-structures

一台机器花了200秒使用冒泡排序对200个名称进行排序。然后在800秒内将分拣多少名称。请帮我解决这个问题。我尝试使用冒泡排序的时间复杂度来解决它,但我无法做到这一点

并且还希望找到以下代码的复杂性

    int somefunct(int n)
    {
      if(n<=2)
        return 1;
      else
       return (somefunct(floor(sqrt(x)))+x);
     }

3 个答案:

答案 0 :(得分:1)

由于在最坏的情况下按冒号排序的时间是n中的2次多项式,我们有:

t = an^2 + bn + c

现在,因为n足够大(这里200),所以我们可以忽略最后两个术语:

t = an^2

将值t = 200n = 200放到a = 1/200

因此,在800秒内,您将能够排序:

800 = (1/200)*(n^2)

=> n = 400名称

至少是因为这是最糟糕的情况。

答案 1 :(得分:0)

在最坏的情况下,冒泡排序的复杂性为O(n^2)。因此,在给定时间的4倍中,它将对当前名称进行两次排序。即。在最坏的情况下,在800秒内有400个名字。

答案 2 :(得分:0)

对于200个名称的排序,冒泡排序可以进行200 * 199/2 = 19900比较 1比较所需的时间是200秒。在800秒内它可以进行80,000次比较 我们必须找到n,这样n(n-1)/ 2 = 80,000。 =&GT; n ^ 2 - n = 160000.上一项可以忽略不计。因此,n ^ 2 = 160000。答案= 400。