该算法的效率是多少

问题描述

| 以下算法的最大O值是多少?为什么是那个值?
algorithm A (val array <ptr to int>)
     1 n = 0
     2 loop ( n < array size ) 
    1 min = n;
    2 m = n;
    3 loop ( m < array size)
      1 if (array[m] < array[min])
            1  min = m;
    4 swap(array[min],array[n]);
     3 n = n + 1
我回答了O(n ^ 2),对吗?关于我如何得出这个结论,内部循环执行n次,其中n =数组大小,外部循环执行n次,其中n是数组大小n * n = n ^ 2     

解决方法

        是!你是对的! 这是选择排序算法。 更精确地说,其Θ(n ^ 2)。 编辑:为什么是那个值? 您将第一个元素。将其与所有其他元素进行比较,以找到数组中的最小值并将其放在第一位。迭代次数:n。 您采用第二个要素。将其与数组的其余部分进行比较,找到该部分的最小值(整个数组的第二最小值),然后将其放在第二位。迭代次数:n-1。 以这种方式继续到最后一个元素,迭代:1。 总数= n + n-1 + ... +1 = n(n + 1)/ 2。那就是O(n ^ 2)。     ,        这就是所谓的选择排序,并且确实具有O(n2)复杂度。