#11. Слияние двух упорядоченных списков | Алгоритмы на Python

#11. Слияние двух упорядоченных списков | Алгоритмы на Python

selfedu

3 года назад

14,398 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

@friend1cat
@friend1cat - 04.03.2021 09:48

Спасибо, Сергей!

Ответить
@Bah1918
@Bah1918 - 04.03.2021 13:01

Всегда интересно.

Ответить
@chopik612
@chopik612 - 04.03.2021 18:12

Учусь программированию пока по этому каналу для того, чтобы потом брать какие-либо заказы на фрилансе. У меня вопрос, достаточно ли того, что предлагает здесь автор на своём канале, чтобы выполнять какие-либо маленькие заказы? Потому что я не знаю, какие именно нужны практические знания для этого. может быть посоветуете хороший курс? желательно по с++.

Ответить
@maxulanov3893
@maxulanov3893 - 13.04.2021 14:58

Какая сложность алгоритма?

Ответить
@povny
@povny - 04.05.2021 21:30

а если нужно получить массив по возрастанию из двух массивов по убыванию

Ответить
@ВиталийКалиниченко-х8э
@ВиталийКалиниченко-х8э - 18.07.2021 12:54

Спасибо, все подробно разжевываете!

Ответить
@oleggreen1244
@oleggreen1244 - 30.07.2021 01:25

Возможно будет ещё быстрее если переносить не по 1 числу, а кусками. Т.е например 2,7,8 и 1,3,4,5,6,9 тут числа 3,4,5,6 можно перенести одной командой. Но нужно искать такие куски.

Ответить
@яндин
@яндин - 19.10.2021 21:37

Спасибо за понятное объяснение.

Ответить
@МамонтовОлег-в9о
@МамонтовОлег-в9о - 18.02.2022 11:06

блин
я через попу нулевых элементов реализовывал
хотя через указатели мне кажется более программистским подходом
спасибо, Сергей, за науку!

Ответить
@АлександрСолодников-ф8с
@АлександрСолодников-ф8с - 30.04.2023 13:50

Благодарю за подробное объяснение! 👍

Ответить
@victoriakubler164
@victoriakubler164 - 13.06.2023 00:00

спасибо огромное за объяснение. Все доступным языком без усложнений

Ответить
@EnjoyTheDeluxe
@EnjoyTheDeluxe - 23.10.2023 11:26

Я не понимаю, а как программа знает о том, что счетчик i принадлежит первому списку, а счетчик j ко второму списку?

Ответить
@ДаниилМатвиенко-ш6ш
@ДаниилМатвиенко-ш6ш - 11.11.2023 23:32

Спасибо большое за то, что показали как можно ещё реализовать данный алгоритм!

Ответить
@ruzoompartygmail4273
@ruzoompartygmail4273 - 16.11.2023 17:47

Спасибо огромное. Отличная подача материала!

Ответить
@user-tx6nx8pj5x
@user-tx6nx8pj5x - 03.01.2024 08:15

Если программу запустить 2 раза, то к предыдущему выводу добавится еще один такой же список. И так можно делать до бесконечности. То есть сначала ответом был список: с. Запустили еще раза прогу: на выводе уже две "с". Сколько раз запускаешь прогу столько списков "с" и будет.

Ответить
@PythonHedgehog
@PythonHedgehog - 21.01.2024 11:38

Удивительно, но факт. Формирование такого списка намного (на порядок или чуть больше) дольше, чем конкатенация (или расширение) двух списков, а затем их сортировка с помощью метода списков sort() или встроенной функции sorted().
Причина в механике метода append().
Для С++ такая сортировка, наверное, годится, но для Python - неоптимальное решение.

Ответить
@freisnz
@freisnz - 22.06.2024 11:07

result = []
while a and b:
result.append(a.pop(0) if a[0] < b[0] else b.pop(0))
result.extend(a if len(a) >0 else b)

Ответить
@SergeyOrlov-yk9rq
@SergeyOrlov-yk9rq - 23.07.2024 07:35

Если сразу добавлять оба равных элемента в список, то это будет меньше итераций.
И если в списках много одинаковых элементов, то выигрыш будет существенный.

while i < N and j < M:
if a[i] == b[j]:
c.append(a[i])
c.append(b[j])
i += 1
j += 1
elif a[i] < b[j]:
c.append(a[i])
i += 1
elif a[i] > b[j]:
c.append(b[j])
j += 1

Ответить