【发布时间】:2016-02-24 01:48:13
【问题描述】:
#include <stdio.h>
int main()
{
int array[20], t = 0; //20-t is the new size of array.
for(int i = 0; i<20; i++)
scanf("%d", &array[i]);
for(int i = 0; i<20-t; i++)
{
for(int j = i+1; j<20-t; j++)
{
if(array[i] == array[j])
{
for(int z = j; z<20-t; z++)
array[z] = array[z+1];//shift numbers.
t++;
i = -1;
}
}
}
}
这个程序运行良好,但我不知道为什么它在 i = -1 时运行,但在 i = 0 时不运行?我也想知道这段代码的复杂度。
for(int i = 0; i<20-t; i++)
printf("%d ", array[i]); //Array after duplicates have been removed.
return 0;
}
【问题讨论】:
-
发布的代码有几个“神奇”数字 20 的实例。这使得代码更难以理解、调试和维护。建议使用#define 为“魔术”数字指定一个有意义的名称,并在整个代码中使用该有意义的名称
标签: c arrays algorithm duplicates complexity-theory