Написать программу, которая определяет, сколько различных чисел находится вмассивеЯзык...

0 голосов
19 просмотров

Написать программу, которая определяет, сколько различных чисел находится вмассиве
Язык Си. Хотя бы алгоритм


Информатика (405 баллов) | 19 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Например, так: явно подсчитать кол-во, "загубив" повторяющиеся числа:
int count_unique(int *a, int n){
  int *ind = malloc(n * sizeof(int));
  int i, j, count = 0;
  for (i = 0; i < n; i++)
    ind[i] = 1;
  for (i = 0; i < n; i++)
    for (j = i + 1; j < n; j++)
      if (a[i] == a[j]) ind[j] = 0;
  for (i = 0; i < n; i++)
    count += ind[i];
  free(ind);
  return count;
}

или: отсортировать массив, а дальше по нему один раз пройтись.
или: составить двусвязный список из элементов массива, а потом удалить повторяющиеся так же, как и в первом варианте.
и т.д. ...

(148k баллов)