Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 05.02.2023
Сообщений: 22

Найдите в списке два ближайших друг к другу числа

05.02.2023, 16:15. Показов 2180. Ответов 11

Студворк — интернет-сервис помощи студентам
Дан список чисел (содержащий не менее двух элементов).
Найдите в нем два ближайших друг к другу числа (то есть два числа с наименьшей разностью).

Выведите эти числа в порядке неубывания.
Используйте встроенную сортировку языка Python.
Решение должно иметь сложность встроенной сортировки + O(n) – один цикл без вложенностей.

Input:
9 4 1 6

Output:
4 6
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.02.2023, 16:15
Ответы с готовыми решениями:

Алгоритм поиска ближайших друг к другу точек
Народ, помогите реализовать алгоритм поиска соседней точки. Есть коллекция точек типа X(x1,x2.... и т.д.) и Y(y1,y2.... и т.д.)...

Поиск двух ближайших друг к другу точек
5. Разработать программу, которая ищет во введенном множестве точек (заданных парами координат) две ближайшие друг к другу и выводит...

Узнать, пересекутся ли трубы, если их продлить со стороны ближайших друг к другу оснований?
Здравствуйте. Помогите, пожалуйста, решить такую задачу. Даны две трубы (цилиндры), которые заданы двумя точками и радиусом. ...

11
77 / 50 / 29
Регистрация: 21.10.2022
Сообщений: 114
05.02.2023, 16:41
Не знаю как со сложностью, но тут один цикл и сортировка

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def minimum_absolute_difference(integers_list):
    sorted_list = sorted(integers_list)
    min_absolute_difference = float("inf")
    min_pairs_list = []
 
    for index in range(0, len(sorted_list)-1):
        small_num = sorted_list[index]
        large_num = sorted_list[index+1]
        abs_diff = abs(large_num - small_num)
        if abs_diff == min_absolute_difference:
            min_pairs_list.append([small_num, large_num])
        elif abs_diff < min_absolute_difference:
            min_absolute_difference = abs_diff
            if len(min_pairs_list) == 0:
                min_pairs_list.append([small_num, large_num])
            else:
                # creates new min_pairs_list with pair items
                min_pairs_list = [[small_num, large_num]]
        else:
            # absolute min difference of pairs is larger than min_absolute_difference
            pass
 
    return min_pairs_list
 
num = [9, 4, 1, 6]
print(minimum_absolute_difference(num))
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
05.02.2023, 17:41
Python
1
2
3
4
from itertools import pairwise
 
a = [9, 4, 1, 6]
print(*min(pairwise(sorted(a)), key=lambda x: x[1] - x[0]))
2
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
05.02.2023, 22:14
Цитата Сообщение от eaa Посмотреть сообщение
from itertools import pairwise
a = [9, 4, 1, 6]
print(*min(pairwise(sorted(a)), key=lambda x: x[1] - x[0]))
Возникнет проблема если 2 пары чисел будут с одинаковой разностью


мой вариант:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
num = [9, 4, 1, 6]
num.sort(reverse = True)
y = num[0]
result = []
 
for x in range(len(num)-1):
    diff = num[x]-num[x+1]
    
    if y == diff not in result:
            result.append([num[x+1],num[x]])
            
    if  diff < y:
        y = diff
        result = [[num[x+1],num[x]]]    
print(result)
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
05.02.2023, 22:45
TimutGin, какие проблемы?
0
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
05.02.2023, 22:56
Цитата Сообщение от eaa Посмотреть сообщение
TimutGin, какие проблемы?
Предположим в списке есть число 11, у него с 9 разность тоже равна 2, как и у 6 с 4.
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
05.02.2023, 22:59
TimutGin, и что?
0
Вирусоборец
 Аватар для thyrex
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
05.02.2023, 23:29
TimutGin, а Вы зачем сортируете по убыванию?
0
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
06.02.2023, 00:07
Цитата Сообщение от thyrex Посмотреть сообщение
TimutGin, а Вы зачем сортируете по убыванию?
Скорее всего для собственного удобства. Если я правильно понимаю цикл for начинает проходиться по списку с 1го элемента. Чтоб найти разность для этого в цикле из наиболее больших значений,которые находятся в начале списка вычитаю следующее за ним меньшее значение.
Если неправильно то поясните как лучше,просто недавно только начал вникать в Python.
0
Вирусоборец
 Аватар для thyrex
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
06.02.2023, 00:18
Так при выводе нужно выводить числа по возрастанию. Никакого смысла нет сортировать по убыванию.
0
132 / 96 / 40
Регистрация: 24.03.2022
Сообщений: 357
06.02.2023, 00:30
thyrex,
Цитата Сообщение от TimutGin Посмотреть сообщение
for x in range(len(num)-1):
    diff = num[x]-num[x+1]
он отнимает следующее число.

Добавлено через 7 минут
TimutGin,
Python
1
2
3
4
5
6
7
8
9
10
11
12
num = [9, 4, 1, 6, 25, 27, 31, 33]
num.sort(reverse=True)
y = num[0]
result = []
for x in range(len(num) - 1):
    diff = num[x] - num[x + 1]
    if y == diff not in result:
        result.append([num[x + 1], num[x]])
    if diff < y:
        y = diff
        result = [[num[x + 1], num[x]]]
print(result)
Вывод: [[31, 33], [25, 27], [4, 6]]

Цитата Сообщение от shin03 Посмотреть сообщение
два ближайших друг к другу числа
0
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
06.02.2023, 00:46
piton21,
Цитата Сообщение от shin03 Посмотреть сообщение
два ближайших друг к другу числа (то есть два числа с наименьшей разностью)
Возможно я неправильно понял,но в скобках это видимо пояснение о том что имеется ввиду числа с наименьшей разностью,а не ближайшими(рядомстоящими) числами в исходном списке
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.02.2023, 00:46
Помогаю со студенческими работами здесь

Даны два действительных числа X и Y, не равные друг другу. Заменить меньшее из этих чисел половиной их суммы,
Не могу понять почему не правильно считает Условие задачи Даны два действительных числа X и Y, не равные друг другу. Заменить меньшее...

Даны два целых числа неравных друг другу. Большее из них увеличить на 50%, меньшее заменить суммой заданных чисел
Даны два целых числа неравных друг другу. Большее из них увеличить на 50%, меньшее заменить суммой заданных чисел.

Даны два целых числа неравных друг другу Большее из них увеличить на 50%, меньшее заменить суммой заданных чисел
Добрый вечер, мне нужна помощь с данными заданиями. Буду очень благодарен! Даны два целых числа неравных друг другу. Большее из них ...

найдите две перпендикулярные друг другу плоскости
В пучке, определяемом плоскостями 2x-3y-1=0 и 3x-3y-5z+2=0,найдите две перпендикулярные друг другу плоскости, одна из которых проходит...

Два неприводимых друг к другу типа
Часто сталкиваюсь с проблемой приводимости типов переменных. А именно обьявляя два типа переменных: typedef DWORD USERID; typedef...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru