#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? Я также хотел бы знать сложность этого кода.Удалить дублирующиеся числа в массиве в C:
for(int i = 0; i<20-t; i++)
printf("%d ", array[i]); //Array after duplicates have been removed.
return 0;
}
опубликованный код имеет несколько экземпляров «магического» номера 20. Это делает код намного сложнее для понимания, отладки и обслуживания. Предложите использовать #define, чтобы присвоить «волшебный» номер значащему имени и использовать это значащее имя во всем коде – user3629249