nev*_*vas 3 c# sorting algorithm big-o time-complexity
据说选择排序的复杂性是O(N ^ 2)但我没有得到逻辑,因为我减少了循环执行的次数.我理解代码块2但不适用于代码块1
public int[] Sorting(int[] array)
{
for (i = 0; i <= array.Length - 1; i++)
{
minimum=i;
for (j = i; j < array.Length-1; j++)
{
if (array[minimum] > array[j+1])
minimum = j + 1;
}
int temp = array[minimum];
array[minimum] = array[i];
array[i] = temp;
}
return array;
}
Run Code Online (Sandbox Code Playgroud)
for(i=0;i<=n;i++) //Code 2
{
for(j=0;j<=n;j++)
Run Code Online (Sandbox Code Playgroud)
设n数组大小.
并查看比较次数(调用if (array[minimum] > array[j+1])).
最后,它被称为0 + 1 + ... +(n-1)次.
而且,在你的情况下,它(n-1)*n/2就是O(n²)
编辑:
所以比较的确切数量是(n-1)*n/2,它并不完全是n²,它看起来更好n²,但实际上并非如此.
它,进入10倍以上,你需要> 100倍的时间才能完成你的算法.
它,进入100倍以上,你需要> 10 000倍的时间才能完成你的算法.
如您所见,当您将k乘以入口数时,您将计算时间大致乘以k².