Program w Pythonie do sortowania przez wstawianie

Sortowanie przez wstawianie to prosty algorytm sortowania, który działa w taki sam sposób, w jaki sortujemy karty do gry, które mamy w rękach.

Program w Pythonie do sortowania przez wstawianie

Funkcja InsertionSort przyjmuje jako dane wejściowe tablicę arr. Najpierw oblicza długość tablicy (n). Jeśli długość wynosi 0 lub 1, funkcja zwraca natychmiast, ponieważ tablica zawierająca element 0 lub 1 jest uważana za już posortowaną.

W przypadku tablic zawierających więcej niż jeden element funkcja kontynuuje iterację po tablicy, zaczynając od drugiego elementu. Pobiera bieżący element (zwany kluczem) i porównuje go z elementami w posortowanej części tablicy, które go poprzedzają. Jeśli klucz jest mniejszy niż element w posortowanej części, funkcja przesuwa ten element w prawo, tworząc miejsce na klucz. Proces ten trwa do momentu znalezienia właściwej pozycji klucza, po czym zostaje on włożony w tę pozycję.

Podany przykład ilustruje proces sortowania przy użyciu algorytmu sortowania przez wstawianie. Początkowa tablica [12, 11, 13, 5, 6] poddawana jest funkcji InsertionSort. Po posortowaniu tablica powinna wynosić [5, 6, 11, 12, 13]. Kod wypisuje posortowaną tablicę jako wynik końcowy.

Pyton




def> insertionSort(arr):> > n> => len> (arr)> # Get the length of the array> > > if> n <> => 1> :> > return> # If the array has 0 or 1 element, it is already sorted, so return> > for> i> in> range> (> 1> , n):> # Iterate over the array starting from the second element> > key> => arr[i]> # Store the current element as the key to be inserted in the right position> > j> => i> -> 1> > while> j>> => 0> and> key # Move elements greater than key one position ahead arr[j+1] = arr[j] # Shift elements to the right j -= 1 arr[j+1] = key # Insert the key in the correct position # Sorting the array [12, 11, 13, 5, 6] using insertionSort arr = [12, 11, 13, 5, 6] insertionSort(arr) print(arr)>

Wyjście:

Sorted array is: [5, 6, 11, 12, 13] 

Złożoność czasowa: O(N 2 )
Przestrzeń pomocnicza: O(1)

Proszę zapoznać się z pełnym artykułem na temat Sortowanie przez wstawianie po więcej szczegółów!