'''merge или спајање две сортиране листе у једну сортирану листу (учешљавање)
На пример, за улаз
lista1 = [1, 3, 4, 7, 9]
lista2 = [2, 5, 6, 8]
резултат треба да буде
lista = [1, 2, 3, 4, 5, 6, 7, 8, 9]
'''
lista1 = [1, 3, 4, 7, 9]
#lista1 = []
#lista1 = [4]
lista2 = [2, 5, 6, 8]
#lista2 = []
#lista2 = [6]
pozicija1 = 0 #позиција у 1. листи
pozicija2 = 0 #позиција у 2. листи
duzina1 = len(lista1) #дужина 1. листе
duzina2 = len(lista2) #дужина 2. листе
lista = [] #резултат, спојене листе lista1 и lista2 у једну сортирану листу
#све док нисмо дошли до краја ниједне од двеју листи
#преписујемо мањи почетни елемент у нову листу;
#ако су почетни елементи једнаки, преписујемо оба
while pozicija1 < duzina1 and pozicija2 < duzina2:
if lista1[pozicija1] < lista2[pozicija2]:
lista.append(lista1[pozicija1])
pozicija1 += 1
elif lista2[pozicija2] < lista1[pozicija1]:
lista.append(lista2[pozicija2])
pozicija2 += 1
else:
lista.append(lista1[pozicija1])
pozicija1 += 1
lista.append(lista2[pozicija2])
pozicija2 += 1
#испразнила се једна листа или чак обе, па преостале елементе, ако их има, само треба преписати
#извршиће се највише једна од следећих петљи, а можда и ниједна
while pozicija1 < duzina1:
lista.append(lista1[pozicija1])
pozicija1 += 1
while pozicija2 < duzina2:
lista.append(lista2[pozicija2])
pozicija2 += 1
print(lista)