Два ближайших числа
Дан список целых чисел, содержащий как минимум два элемента. Найдите в нём два ближайших элемента (то есть два элемента с минимальной абсолютной разностью). Изменять список при этом нельзя.
Входные данные:
В первой строке дано натуральное число N≤100 — размер массива. В следующей строчке даны N целых чисел, не превосходящих по модулю 231
Выходные данные:
Программа должна вывести два числа: индексы двух элементов списка, абсолютная величина разности которых минимальна.
Примеры:
Ввод:
6
7 0 4 2 5 9
Вывод:
2 4
1. В начале нам необходимо прочитать данные входного массива. Первая строка содержит количество элементов в массиве, а во второй строке задан сам массив чисел. Для этого воспользуемся функцией `input()`, которая будет считывать строки с входными данными, и функцией `split()`, которая разделит строку на подстроки по пробелам и превратит их в список чисел. В нашем случае, нам нужно преобразовать строки с числами в список целых чисел. Вот код:
```python
n = int(input()) # считываем количество элементов в массиве
array = list(map(int, input().split())) # считываем массив чисел
```
2. Теперь у нас есть массив чисел, и мы хотим найти два ближайших элемента. Для этого создадим переменные `min_diff` и `min_indices` и инициализируем их так, чтобы они хранили пока еще несуществующее значение разности и индексы:
```python
min_diff = float('inf') # задаем наимаксимальную разность изначально
min_indices = (-1, -1) # задаем несуществующие индексы изначально
```
3. Теперь, чтобы найти два ближайших числа в массиве, пройдем циклом по всем парам элементов, вычислим разность между ними и обновим значения `min_diff` и `min_indices`, если текущая пара имеет меньшую разность:
```python
for i in range(n - 1): # проходим по всем парам элементов до предпоследнего
for j in range(i + 1, n): # для каждого i проходим по всем элементам справа от i
diff = abs(array[i] - array[j]) # вычисляем разность между элементами по модулю
if diff < min_diff: # если разность меньше текущего минимума
min_diff = diff # обновляем минимальную разность
min_indices = (i, j) # обновляем индексы пары элементов с минимальной разностью
```
4. Наконец, нужно вывести результат. Для этого просто выведем значения индексов, разделив их пробелом:
```python
print(min_indices[0], min_indices[1])
```
5. Полный код программы будет выглядеть так:
```python
n = int(input()) # считываем количество элементов в массиве
array = list(map(int, input().split())) # считываем массив чисел
min_diff = float('inf') # задаем наимаксимальную разность изначально
min_indices = (-1, -1) # задаем несуществующие индексы изначально
for i in range(n - 1): # проходим по всем парам элементов до предпоследнего
for j in range(i + 1, n): # для каждого i проходим по всем элементам справа от i
diff = abs(array[i] - array[j]) # вычисляем разность между элементами по модулю
if diff < min_diff: # если разность меньше текущего минимума
min_diff = diff # обновляем минимальную разность
min_indices = (i, j) # обновляем индексы пары элементов с минимальной разностью
print(min_indices[0], min_indices[1]) # выводим индексы пары элементов с минимальной разностью
```
Таким образом, при вводе примера из условия задачи:
```
6
7 0 4 2 5 9
```
Программа выведет:
```
2 4
```
И это будут индексы элементов `4` и `5` списка `7 0 4 2 5 9` с минимальной абсолютной разностью 1.