На разных веб-сайтах псевдокод похож на приведенный ниже:
merge_sort(num_list)
length <-- length of num_list
if length > 1
shorter_list_A <-- first half of num_list
shorter_list_B <-- second half of num_list
result_A <-- merge_sort(shorter_list_A)
result_B <-- merge_sort(shorter_list_B)
sorted_list <-- merge(result_A, result_B)
return sorted_list
else
return num_list
end
Итак, если у нас есть 4 числа: 8,3,6,2
MergeSort(8,3,6,2)
первая половина чисел помещена в Shorter_list_A(8,3), а вторая половина чисел помещена в Shorter_list_B(6,2)
shorter_list_A <-- first half of num_list
shorter_list_B <-- second half of num_list
Итак, теперь у нас есть два списка: Shorter_list_A(8,3) и Shorter_list_B (6,2).
result_A <-- merge_sort(shorter_list_A)
Merge_sort снова вызывает merge_sort, поэтому происходит следующее:
merge_sort(Shorter_list_A) // also 8,3
length <-- length of Shorter_list_A
if length > 1
shorter_list_A <-- first half of Shorter_list_A
//8 put to Shorter_list_A
shorter_list_B <-- second half of Shorter_list_A
//3 put to Shorter_list_B
result_A <-- merge_sort(shorter_list_A)
//merge_sort calls merge_sort again
result_B <-- merge_sort(shorter_list_B)
sorted_list <-- merge(result_A, result_B)
return sorted_list
else
return Shorter_list_A
end
Итак, у нас снова есть два списка: short_list_A(8) и Shorter_list_B (6)
Исходя из объяснения, правильно ли я понял это или совершенно неправильно?
Затем он снова вызывает merge_sort. Поскольку длина Shorter_list_A равна всего 1, он содержит только одно число, равное 8. Вот что происходит:
merge_sort(Shorter_list_A)
length <-- length of Shorter_list_A
return Shorter_list_A
end
Он возвращает Shorter_list_A, что равно 8.
Какой именно возврат здесь? Я застрял там.