ermek6
@ermek6
::Живу с удовольствием::

Можете помочь с алгоритмом сортировки?

Начал читать тут основы алгоритмов Тима Рафгардена, и в ведении дается аргоритм сортировки слиянием. Я его реализовал так.

Но мне очень не нравится блок условий в merge. Но без него сортировка не идёт :,(

Подсобите плиз советом, как правильно объединять.
  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
1. Вам свезло, что длина массива — ровно 8, то есть степень двойки. Ваш алгоритм никак не приспособлен к тому, что на очередном шаге длина массива окажется нечётной.
2. Я не знаю, как происходит слайсинг массивов и передача параметров в Go, но надо проверять, насколько много перевыделения лишней памяти.
3. Опять свезло — левая и правая половинки расходуются очень равномерно: один слева — один справа. Если взять отсортированный массив { 1, 2, 3, 4, 5, 6, 7, 8 }, когда сначала расходуем левую половинку, потом правую — должно заглючить. На самом деле слияние массивов содержит ещё больше всяких условий, и на каждом сравнении мы кладём в результирующий массив не два элемента из разных массивов, а один — меньший. И соответственно сдвигаем один из индексов-кареток.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы