Слияние списков. Метод двух указателей Python

preview_player
Показать описание
🔥🔥🔥 Инди-курс по Python 🔥🔥🔥

👉👉👉 Свой вопрос по курсу можешь задать в чате

👉👉👉 Также подписывайся на мой телеграмм-канал

Условие задачи

Знакомство с циклом while

Курс по основам python на Степике

Записывайся на курс на Stepic по ООП, где найдешь много практических задач

Данная задача решается при помощи двух указателей
два указателя python

Если кому нужна помощь, предлагаю индивидуальные занятия. Подробнее пишите в личку в вк

В данном группе можете найти информацию о новых видео и задать вопросы
Рекомендации по теме
Комментарии
Автор

Отличный преподаватель. Алгоритмы - в плейлист.

dimitrilarios
Автор

В конце не обязательно проверять с if. Можно просто указать что добавляем необработанные хвостики списков:
с += a[i : ]
с += b[i : ]
И тот список, который мы прошли полностью, добавит "ничего", а другой - свой необработанный хвостик.

AeroAllion
Автор

Для информации. как от участника соревнований по алгоритмам. Самый быстрый по времени способ вывести список в печать - сначала превратить данные в строку, то есть: print(" " .jion(list) )

xewuss
Автор

Господа, кто преминил функции sort или sorted, Вы конечно молодцы. Только данный урок о алгоритме, который входит в часть алгоритма сортировки слияния, о чем автор в конце видео и сказал. Это видео не о том, как быстрее сложить два списка и отсортировать. На уровне ядра python это конечно будет проходить все быстрее... Это видео об одном из популярных алгоритмах, которые хоть в жизни и не понадобятся, но учить (особенно начинающим) их обязательно нужно.

arxxximed
Автор

n, m=list(map(int, input().split()))
a=list(map(int, input().split()))
x=list(map(int, input().split()))
s, d=a+x, []
while len(s)!=0:
d.append(min(s))
s.remove(min(s))
print(*d)

morinks
Автор

Я сложил два входных списка в один (list_sum), затем создал пустой список(list_sort) и закидывал в него min значения из list_sum, используя while. Закидывал именно в конец списка, одновременно удаляя закинутое из list_sum.

buddhagameplay
Автор

Интересный метод, громоздкий, правда. После пузырькового-то.
А за урок, как всегда, большое спасибо!

userr
Автор

l1 = list(map(int, input().split()))
l2 = list(map(int, input().split()))
r = []
l_1_2 = l1 + l2
len_l = len(l_1_2)
while len(l_1_2):

print(*r)

Evgeniy
Автор

Вот, с вводом у меня были проблемы, но после того как я видел этот разбор, я просто молчу.

lofiboy
Автор

как вариант через генератор ```# Слияние списков

def generator_merge_inner(iter_1, iter_2):
elem_1 = next(iter_1, None)
elem_2 = next(iter_2, None)
while elem_1 is not None or elem_2 is not None:
if elem_1 is None or (elem_2 is not None and elem_2 < elem_1):
yield elem_2
elem_2 = next(iter_2, None)
else:
yield elem_1
elem_1 = next(iter_1, None)


def merge_lists(list_1, list_2):
return list(generator_merge_inner(iter(list_1), iter(list_2)))


if __name__ == '__main__':
list1 = [1, 5, 9, 10, 11, 13]
list2 = [2, 3, 4, 5, 6, 7, 8, 12]
print(merge_lists(list1, list2))```

МаксимМакаров-оы
Автор

Или так:
n, m = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
ab = a + b
c = []
while ab:

print(*c)

alex_pure
Автор

Это все, конечно, очень хорошо, но задача не учитывает, что элементы массивов могут задаваться не по порядку:
a = [1, 2, 5, -2, 3]
b = [2, 4, 8]
Если не пользоваться встроенным методом сортировки, то придется применять метод из урока merge sorted, что добавит лишнее время на вычисления

ПарамПампам-фщ
Автор

как называется плагин( или настройка пайчарма) при котором выделяются все одинаковые переменные ? При этом чтобы это было не через ctrl+F

umni_kot
Автор

a=map(int, input().split())
c=list(input().split())
d=list(input().split())
c.extend(d)
leng=len(c)
f=[]
while c:
for i in range(leng):
f.append(min(c))
c.remove(min(c))
print(f)
Я сделала так. Артем, есть вопрос))) Почему 10 выскакивает в списке f первым элементом? Реально не могу понять. То есть все варианты до 10 пропечатываются правильно, а где больше 10 нет

nataliia_chy
Автор

для демонстрации алгоритма слияния списков норм, для изучения программирования - только для начального уровня.

antonkulish
Автор

Я лично решил сложив списки и использовал bubble sort))))

isok.atyrau
Автор

а n и m как длины списков определяются вручную исключительно в образовательных целях?

arxxximed
Автор

ЗАЧЕМ В КОНЦЕ УСТРАИВАТЬ ЕЩЕ 2 ЦИКЛА, НЕ ПРОЩЕ ЛИ ОСТАТКИ, ДОБАВИТЬ СРЕЗОМ

bliaditube
Автор

А с таким набором данных: [2, 4, 5] и [1, 4, 5, 10, 3, 1] у вас получится применить "алгоритм"?! На кого это рассчитано?)))

felixua
Автор

Ты сказал что в случае с числами 288345510 программа будет выполняться быстрее, но мне кажешься что сравнивать все объекты списка это наоборот длиннее, и воспользоваться функцией sort, или sorted если sort нельзя легче.

ГончаровСтепан
join shbcf.ru