Пытаюсь понять алгоритм сортировки вставками

Я читаю несколько книг по Python, структурам данных, анализу и проектированию алгоритмов. Я хочу действительно понять все тонкости и нюансы кодирования и стать эффективным программистом. Сложно попросить книгу разъяснить, поэтому я задал вопрос на stackoverflow. Я действительно нахожу алгоритмы и рекурсию сложными... Я разместил ниже некоторый код (сортировка вставкой), который я пытаюсь понять, что именно происходит. Я понимаю, в общем, что должно произойти, но я не очень понимаю, как и почему.

Из попыток проанализировать куски кода на Python Idle я знаю, что:

key (holds variables) = 8, 2, 4, 9, 3, 6

и что:

i (holds the length) = 7 ( 1, 2, 3, 4, 5, 6, 7)

Я не знаю, почему 1 используется в первой строке: range(1, len(mylist)). Любая помощь будет принята с благодарностью.

mylist = [8, 2, 4, 9, 3, 6]

for j in range(1,len(mylist)):
    key = mylist[j]
    i = j
    while i > 0 and mylist[i-1] > key:
        mylist[i] = mylist[i - 1]
        i -= 1
        mylist[i] = key
6
задан templatetypedef 12 September 2011 в 18:38
поделиться