Есть ли в массиве одинаковые элементы
Задача
Дан массив целых чисел. Проверить, есть ли в нем одинаковые элементы.
Решение
Чтобы проверить каждый элемент массива на уникальность, надо сравнить его с остальными элементами. Так первый элемент следует сравнить со вторым, третьим и т. д. до конца. После этого второй элемент - с третьим, четвертым и т. д. Второй элемент с первым сравнивать не надо, т.к. они уже сравнивались при оценке уникальности первого элемента. Когда очередь дойдет до предпоследнего элемента, то он сравнивается только с последним. Последний же уже сравнивать не надо. Таким образом, количество итераций внешнего цикла на 1 меньше, чем элементов в массиве. Счетчик этого цикла - это номер элемента, который сравнивается с элементами стоящими после него.
Внутренний цикл перебирает элементы от следующего за исследуемым до последнего. На данном отрезке элементы массива сравниваются с исследуемым элементом. Если какой-то элемент окажется равен исследуемому, то значит, что в массиве есть одинаковые значения. Следует вывести соответствующее сообщение и завершить программу, т.к. дальше уже можно не проверять.
Если программа в процессе выполнения циклов не завершилась, то значит, одинаковых элементов найдено не было. Следует вывести сообщение, что все элементы массива разные.
Программа на языке Паскаль:
const N = 10; var arr: array[1..N] of byte; i, k: byte; begin randomize; for i:=1 to N do begin arr[i] := random(80); write(arr[i]:3); end; writeln; for i:=1 to N-1 do for k:=i+1 to N do if arr[i] = arr[k] then begin writeln('Есть одинаковые элементы'); exit; end; writeln('Все элементы уникальны'); end.
Примеры выполнения кода:
13 76 31 13 32 18 2 70 76 8 Есть одинаковые элементы
59 11 18 46 25 39 44 10 23 6 Все элементы уникальны