可能有重复:
for i:for o = i + 1的复杂度是什么
我已经做出了针对长度为5的数组的排序算法:
int myarray[5] = {2,4,3,5,1};
int i;
for (i = 0; i < 5; i++)
{
printf("%d", myarray[i]);
int j;
for (j=i+1; j < 5; j++)
{
int tmp = myarray[i];
if (myarray[i] > myarray[j]) {
tmp = myarray[i];
myarray[i] = myarray[j];
myarray[j] = tmp;
}
}
}
我认为这个排序算法的复杂度是O(n*n)
,因为对于每个元素,你都要和其他元素进行比较。然而,我也注意到在外部循环中每次增加时,我们不是和所有其他元素进行比较,而是和剩余的元素-i进行比较。那么它的复杂度会是多少呢?