Лабораторная работа № Задачи линейного программирования. Математическая модель задачи, экономический анализ. Поиск в ширину


Лабораторная работа № 9 Двойная проблема для задач линейного программирования. Сортировка слиянием



Download 114,19 Kb.
bet7/13
Sana23.04.2022
Hajmi114,19 Kb.
#578049
TuriЛабораторная работа
1   2   3   4   5   6   7   8   9   10   ...   13
Bog'liq
Лабораторная работа № 7-12

Лабораторная работа № 9 Двойная проблема для задач линейного программирования. Сортировка слиянием

1. Цель работы
Изучить алгоритм сортировки слиянием
2. Теоретический материал
Алгоритм сортировки слиянием основан на идее, что два отсортированных списка можно слить в один отсортированный список за время, равное суммарной длине этих списков.
Для этого сравним первые элементы данных списков. Тот элемент, который меньше, скопируем в конец результирующего списка (который первоначально пуст) и в этом списке перейдем к следующему элементу. Будем повторять этот процесс (выбираем из начала двух списков наименьший элемент, копируем его в результирующий список), пока один из исходных списков не кончится. После этого оставшиеся элементы (один из двух исходных списков будет непуст) скопируем в результирующий список.
Для того, чтобы не удалять начальные элементы из списков, заведем два индекса i и j, указывающие на текущие элементы в каждом списке. Вместо удаления элементов будем передвигать эти индексы. В конце добавим к результирующему списку оставшиеся элементы из двух исходных списков A[i:] + B[j:] (один из этих срезов будет пустым, это не должно нас смущать).
def merge(A, B):
Res = []
i = 0
j = 0
while i < len(A) and j < len(B):
if A[i] <= B[j]:
Res.append(A[i])
i += 1
else:
Res.append(B[j])
j += 1
Res += A[i:] + B[j:]
return Res

Заметим, что сложность работы функции merge — линейная от суммарных длин списков A и B, так как каждый элемент обрабатывается ровно один раз за .


Теперь можно реализовать сортировку слиянием. Это — рекурсивная функция, которая получает на вход исходный список и список, составленный из тех же элементов, но отсортированный. Если длина исходного списка равна 1 или 0, то он уже отсортирован и сортировать его не надо. Если же длина списка больше 1, то разобьем его на две части равной (или почти равной, если длина исходного списка — нечетная). Отсортируем обе эти части, затем сольем их вместе при помощи функции merge.



Download 114,19 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   ...   13




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish