# coding=utf-8 # sortowanie przez wstawianie def insertion_sort(v): # niezmiennik: przed kaĹźdym obrotem pÄtli, fragment od 0 do i jest posortowany for i in range(1, len(v)): # znajdĹş pierwszy element wiÄkszy od v[i] we fragmencie v od 0 do i j = 0 while v[j] <= v[i] and j < i: j += 1 # zapamiÄtaj na boku element v[i] tmp = v[i] # przesuĹ fragment od j do i - 1 o jeden element w prawo (Ĺźeby zrobiÄ miejsce na pozycji j dla elementu v[i]) # zakres [::-1] odwraca listÄ for k in range(j + 1, i + 1)[::-1]: v[k] = v[k - 1] # wstaw element i na wĹaĹciwe miejsce v[j] = tmp print v # warunek koĹcowy: i == len(v) - 1, fragment od 0 do len(v) - 1 jest posortowany, # czyli caĹa lista v jest posortowana