Почему j всегда = 4 в начале этой вставки сортировки? - PullRequest
0 голосов
/ 22 апреля 2019

Я отслеживаю вставки, всплывающие подсказки и сортировку, чтобы лучше понять / отработать трассировку.

Я использую Python Tutor, чтобы помочь, и независимо от размера списка, наначало этой вставки сортировки j всегда [4]?На линии j = a [i].

Что такое [я]?Почему мы устанавливаем его равным j?Я имею в виду, очевидно, что это [4] лол, но я не могу понять, откуда он получает эти 4.Также, похоже, что это не индекс 4, как указывает Python Tutor, потому что если бы это было правдой, оно было бы равно 5.Когда я добавляю строку «print (j)» под j = a [i], появляется первое число j, как и число 4, которое является индексом [1].

Я просто сгорел ибыть полностью глупым или упустить что-то очевидноеLol

Спасибо !!!

def insertion(a):

    for i in range(1,len(a)):
       j = a[i]

           while i>0 and a[i-1]>j:
              print(a[i-j])
              a[i] = a[i-1]
              i = i-1
              a[i] = j

    return (a)

if __name__ == '__main__':
    lst = [2,4,3,1,5,6]
    print(insertion(lst))

1 Ответ

0 голосов
/ 22 апреля 2019
  • Мы присваиваем [i] j, потому что пытаемся найти позицию между 0..i-1, чтобы соответствовать [i].
  • Мы предполагаем, что [0..i-1] уже отсортировано. Так что было бы достаточно, если мы пойдем назад, пока a [i - 1]> j.
  • Пока вы начинаете свой цикл, ваш индекс, я был бы равен 1. Так что j, будет печать 4.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...