алгоритм сортировки слиянием являетсябудет ли эта часть кода выполняться в сортировке слияния?
Шаг 1 - если это только один элемент в списке это уже отсортированный, возвращение. Шаг 2 - разделите список рекурсивно на две половины, пока он больше не может быть разделен. Шаг 3 - объедините меньшие списки в новый список в отсортированном порядке.
с этим psedu кодом:
procedure mergesort(var a as array)
if (n == 1) return a
var l1 as array = a[0] ... a[n/2]
var l2 as array = a[n/2+1] ... a[n]
l1 = mergesort(l1)
l2 = mergesort(l2)
return merge(l1, l2)
end procedure
procedure merge(var a as array, var b as array)
var c as array
while (a and b have elements)
if (a[0] > b[0])
add b[0] to the end of c
remove b[0] from b
else
add a[0] to the end of c
remove a[0] from a
end if
end while
while (a has elements)
add a[0] to the end of c
remove a[0] from a
end while
while (b has elements)
add b[0] to the end of c
remove b[0] from b
end while
return c
end procedure
мой вопрос:
в функции слияния, есть два в то время как цикл, чтобы проверить, если a
и b
еще есть элементы и добавлять их к массиву c
.
мой вопрос будет (может) эти два whiles будет выполняться в той же функции?
или нравится, если a
все еще есть предметы, то есть b
определенно пуст и наоборот?
Почему ребята вы меня минус? –