Предмет: Информатика,
автор: Hidashko
Написать программу, которая определяет, сколько различных чисел находится вмассиве
Язык Си. Хотя бы алгоритм
Ответы
Автор ответа:
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;
}
или: отсортировать массив, а дальше по нему один раз пройтись.
или: составить двусвязный список из элементов массива, а потом удалить повторяющиеся так же, как и в первом варианте.
и т.д. ...
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;
}
или: отсортировать массив, а дальше по нему один раз пройтись.
или: составить двусвязный список из элементов массива, а потом удалить повторяющиеся так же, как и в первом варианте.
и т.д. ...
Похожие вопросы
Предмет: Информатика,
автор: 000user000
Предмет: Українська мова,
автор: npris2007
Предмет: Математика,
автор: 30072006dv
Предмет: География,
автор: pFsas
Предмет: Литература,
автор: Vladavesnushka