【发布时间】:2016-02-13 02:55:44
【问题描述】:
我正在尝试评估这个算法:
检查相等性是 O(n2)
移除一个元素是 O(n)
所以我认为整个算法在最坏的情况下会是 O(n^3)。
for (i = 0; i < ne-1; i++)
{
for (j = i+1; j < ne; j++)
{
if (strcmp(array[i].id, array[j].id)==0)
{
cont++;
for (k = j; k < ne - 1; k++)
array[k] = array[k + 1];
ne--;
}
}
}
【问题讨论】:
-
这是有效的 C 代码吗?
-
是的,array 是一个包含 3 个 char[20] 类型字段的结构
-
能否将您当前的代码替换为MCVE?例如,我看不到你的任何变量是在哪里声明的。
-
@Elogent 这不是与实际问题无关吗?
-
重写代码以仅显示最坏的情况,并自己看看。很难理解你不知道什么以及你在哪里估计有问题。在变量名上保存字节也使得理解代码的意图非常痛苦。
标签: c algorithm duplicates time-complexity