Algorithm 复杂性是N还是N^2?
我在解决一个问题,我必须从排序的数组中创建一个唯一的数组,它可以有重复的元素 我使用以下代码解决了这个问题:Algorithm 复杂性是N还是N^2?,algorithm,sorting,time-complexity,Algorithm,Sorting,Time Complexity,我在解决一个问题,我必须从排序的数组中创建一个唯一的数组,它可以有重复的元素 我使用以下代码解决了这个问题: for (int i = 0; i < sorted.Length - 1; i++) { if (sorted[i] == sorted[i + 1]) { unqiueList.Add(sorted[i]); int j = i + 1; while (j < sorted.Length) {
for (int i = 0; i < sorted.Length - 1; i++)
{
if (sorted[i] == sorted[i + 1])
{
unqiueList.Add(sorted[i]);
int j = i + 1;
while (j < sorted.Length)
{
if (sorted[i] != sorted[j])
{
break;
}
j++;
i++;
}
}
else
{
unqiueList.Add(sorted[i]);
}
}
for(int i=0;i
现在,我想知道这个解决方案的复杂性
有人说是N,但有人说是N^2。它提醒我为什么不向堆栈溢出提出同样的问题,以便更好地理解它。最糟糕的情况是O(N)
这有点令人讨厌,但考虑到i
和j
在循环中的每次迭代都是递增的,而循环中基本上没有循环
该算法不允许超过排序的.Length
的迭代次数
有趣的是;这表明while循环可以替换为if
语句(可能不是一个简单的语句),但这将是一个很好的练习。最坏的情况是O(N)
这有点令人讨厌,但考虑到i
和j
在循环中的每次迭代都是递增的,而循环中基本上没有循环
该算法不允许超过排序的.Length
的迭代次数
有趣的是;这表明while循环可以替换为if
语句(可能不是一个简单的语句),但这将是一个很好的练习。“排序数组中的唯一数组”听起来好像应该使用Random()进行随机输出。还是你还在整理?除非您将其作为一项任务,否则通常可以使用数组并列出排序函数。@Christopher-对于唯一数组,我的意思是数组具有唯一的元素,并且其中没有重复的元素。“排序数组中的唯一数组”听起来像是您应该使用Random()进行随机输出。还是你还在整理?除非您将其作为一项任务,否则您通常可以使用数组并列出排序函数。@Christopher-对于唯一数组,我的意思是数组具有唯一的元素,并且其中没有重复的元素。