от
Я пытаюсь реализовать сортировка слиянием на языке Python. Но по какой-то причине, я получаю неожиданное поведение и я был бы признателен, если вторая пара глаз может определить, что я может быть делаю неправильно. Код выглядит следующим образом:
# Implementation of Merge

П. С.: Есть много инструкций Print для отладки. Я оставил их здесь, так что можно увидеть, где именно я ищу соответствующие значения в потоке исполнения 

Теперь, после выполнения вышеуказанной программы я получаю ожидаемое поведение для нескольких наборов массивов, таких как:

Merging!
['1', '3']
['1']
['3']
('value of i is ', 0, 'value of j is', 0)
Entering first while statement
('Left index value is ', '1', 'Right index value is ', '3')
('Value is being entered at index ', 0, 'and the value is', '1')
('End of iteration ', 0, 0)
Entering third while statement
('Right index value is ', '3')
('Value is being entered at index ', 1, 'and the value is', '3')  
('Merging done! Sorted array is ', ['1', '3'])
Merging!  
['5', '7']
['5']
['7']
('value of i is ', 0, 'value of j is', 0)  
Entering first while statement
('Left index value is ', '5', 'Right index value is ', '7')
('Value is being entered at index ', 0, 'and the value is', '5')
('End of iteration ', 0, 0)
Entering third while statement
('Right index value is ', '7')
('Value is being entered at index ', 1, 'and the value is', '7')
('Merging done! Sorted array is ', ['5', '7'])
Merging!
['1', '3', '5', '7']
['1', '3']
['5', '7']
('value of i is ', 0, 'value of j is', 0)
Entering first while statement
('Left index value is ', '1', 'Right index value is ', '5')
('Value is being entered at index ', 0, 'and the value is', '1')
('End of iteration ', 0, 0)
('value of i is ', 1, 'value of j is', 0)
Entering first while statement
('Left index value is ', '3', 'Right index value is ', '5')
('Value is being entered at index ', 1, 'and the value is', '3')
('End of iteration ', 1, 0)
Entering third while statement
('Right index value is ', '5')
('Value is being entered at index ', 2, 'and the value is', '5')
Entering third while statement
('Right index value is ', '7')
('Value is being entered at index ', 3, 'and the value is', '7')
('Merging done! Sorted array is ', ['1', '3', '5', '7'])
Принимая во внимание, что на поздних стадиях исполнения поведение
if
не такой как хотелось бы:
Merging!
['1', '3', '5', '7', '4', '6', '8', '2', '19', '15', '12', '11', '16', '17', '10', '20']
['1', '2', '3', '4', '5', '6', '7', '8']
['10', '11', '12', '15', '16', '17', '19', '20']
('value of i is ', 0, 'value of j is', 0)
Entering first while statement
('Left index value is ', '1', 'Right index value is ', '10')
('Value is being entered at index ', 0, 'and the value is', '1')
('End of iteration ', 0, 0)
('value of i is ', 1, 'value of j is', 0)
Entering first while statement
Entering the else of first while statement
('Left index value is ', '2', 'Right index value is ', '10')
('Value is being entered at index ', 1, 'and the value is', '10')
('End of iteration ', 1, 0)
('value of i is ', 1, 'value of j is', 1)
Entering first while statement
Entering the else of first while statement
('Left index value is ', '2', 'Right index value is ', '11')
('Value is being entered at index ', 2, 'and the value is', '11')
('End of iteration ', 1, 1)
('value of i is ', 1, 'value of j is', 2)
Я не могу понять, почему это происходит. Судя по всему, кажется, что я пропавших без вести на что-то очень очевидное, но не смогли выяснить это пока. Я был бы признателен, если вы можете дать свои мысли на нем.

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...