2.3 - Метод декомпозиции
Реализуем сортировку слиянием на основе псевдокода в книге:
def merge(array, p, q, r):
n = q-p+1
n2 = r-q
left = [array[p+i] for i in range(0, n)]
right = [array[q+j+1] for j in range(0, n2)]
i = 0
j = 0
for k in range(p, r):
if left[i] <= right[j]:
array[k] = left[i]
i += 1
else:
array[k], array[k+1] = right[j], array[k]
j += 1
def merge_sort(array, p, r):
if p < r:
q = (p+r)/2
merge_sort(array, p, q)
merge_sort(array, q+1, r)
merge(array, p, q, r)
return array
Оптимизируем код, и перепишем в python стиле: #TODO
Упражнение 2.3.1
Проилюстрируйте работу алгоритма сортировки слиянием для массива A = [3, 41, 52, 26, 38, 57, 9, 49]
Упражнение 2.3.3
#TODO
Упражнение 2.3.4
#TODO
Упражнение 2.3.5
#TODO