选择排序最佳交换情况不是O(N)是O(1)!!?

时间:2017-12-26 17:23:56

标签: php algorithm sorting

我在选择排序中看到,如果内部等于最小值,它将交换它们。但为什么你这样做? 我刚刚添加了if语句用于交换if $ inner = $ min所以为什么交换它们因为它们是相同的索引!那你为什么这么做?!!

条件是:如果$ inner = $ minimum(不要交换)。否则他们不是euqal(交换)。

这是代码。

\framesubtitle

1 个答案:

答案 0 :(得分:0)

没有。时间复杂度并不取决于您所进行的交换次数,而是取决于检查的迭代次数。

让我们举个例子。, 1 4 9 3 0 8 5

您说您将迭代整个数组并找到最低(最小)数字,如果两者不相等,您将与当前索引进行交换。

这意味着,

您的排序数组:0 4 9 3 1 8 5

但它没有排序。这意味着它仅排序到第0个[第一个数字]索引。

你必须从第二个索引重复它。

现在,让我们找出实际的时间复杂度。

当你为每个索引进行迭代时(让我们采用' i'),对于外循环它是O(N)并且你将从i + 1迭代内循环(让我们把它作为内部循环的O(N)。

因此O(N)* O(N)= O(N ^ 2)

如果你仍然有任何疑问,让我们采取j的迭代,

对于i = 0,j从1开始重复 - > Ñ

对于i = 1,j从2 - >迭代; Ñ

对于i = 2,j从3 - >迭代; N等等......

so =(N-1)+(N-2)+(N-3)+(N-4)...... + 1

=> (N(N-1))/ 2

= O(N ^ 2)