Sortowanie przez wybieranie i wstawianie

Struktury danych i algorytmy w Pythonie

Miriam Antona

Software engineer

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Jeden wskaźnik wskazuje na pierwszy element.

  • Wyznacz najmniejszą wartość
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Jeden wskaźnik wskazuje na pierwszy element. Pierwszy element jest zaznaczony na pomarańczowo.

  • Wyznacz najmniejszą wartość
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Jeden wskaźnik wskazuje na drugi element. Pierwszy element jest zaznaczony na pomarańczowo.

  • Wyznacz najmniejszą wartość
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Jeden wskaźnik wskazuje na drugi element. Drugi element jest zaznaczony na pomarańczowo.

  • Wyznacz najmniejszą wartość
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Jeden wskaźnik wskazuje na trzeci element. Drugi element jest zaznaczony na pomarańczowo.

  • Wyznacz najmniejszą wartość
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Jeden wskaźnik wskazuje na czwarty element. Drugi element jest zaznaczony na pomarańczowo.

  • Wyznacz najmniejszą wartość
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Jeden wskaźnik wskazuje na czwarty element. Czwarty element jest zaznaczony na pomarańczowo.

  • Wyznacz najmniejszą wartość
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Jeden wskaźnik wskazuje na piąty element. Czwarty element jest zaznaczony na pomarańczowo.

  • Wyznacz najmniejszą wartość
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Czwarty element jest zaznaczony na pomarańczowo. Dwie strzałki wskazują, że pierwszy i czwarty element zostaną zamienione miejscami.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy element jest zaznaczony na pomarańczowo. Pierwszy i czwarty element zostały zamienione miejscami.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy element jest zaznaczony na niebiesko, a drugi na pomarańczowo. Jeden wskaźnik wskazuje na drugi element.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy element jest zaznaczony na niebiesko, a drugi na pomarańczowo. Jeden wskaźnik wskazuje na trzeci element.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy element jest zaznaczony na niebiesko, a drugi na pomarańczowo. Jeden wskaźnik wskazuje na czwarty element.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy element jest zaznaczony na niebiesko, a drugi na pomarańczowo. Jeden wskaźnik wskazuje na piąty element.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy i drugi element są zaznaczone na niebiesko. Jeden wskaźnik wskazuje na trzeci element.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy i drugi element są zaznaczone na niebiesko, a trzeci na pomarańczowo. Jeden wskaźnik wskazuje na trzeci element.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy i drugi element są zaznaczone na niebiesko, a trzeci na pomarańczowo. Jeden wskaźnik wskazuje na czwarty element.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy i drugi element są zaznaczone na niebiesko, a czwarty na pomarańczowo. Jeden wskaźnik wskazuje na czwarty element.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy i drugi element są zaznaczone na niebiesko, a czwarty na pomarańczowo. Jeden wskaźnik wskazuje na piąty element.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy i drugi element są zaznaczone na niebiesko, a czwarty na pomarańczowo. Dwie strzałki wskazują, że trzeci i czwarty element zostaną zamienione miejscami.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy i drugi element są zaznaczone na niebiesko, a trzeci na pomarańczowo. Trzeci i czwarty element zostały zamienione miejscami.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi i trzeci element są zaznaczone na niebiesko. Jeden wskaźnik wskazuje na czwarty element.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi i trzeci element są zaznaczone na niebiesko, a czwarty na pomarańczowo. Jeden wskaźnik wskazuje na czwarty element.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi i trzeci element są zaznaczone na niebiesko, a czwarty na pomarańczowo. Jeden wskaźnik wskazuje na piąty element.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi i trzeci element są zaznaczone na niebiesko, a piąty na pomarańczowo. Jeden wskaźnik wskazuje na piąty element.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi i trzeci element są zaznaczone na niebiesko, a piąty na pomarańczowo. Dwie strzałki wskazują, że czwarty i piąty element zostaną zamienione miejscami.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi i trzeci element są zaznaczone na niebiesko, a czwarty na pomarańczowo. Czwarty i piąty element zostały zamienione miejscami.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi, trzeci i czwarty element są zaznaczone na niebiesko.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Wszystkie elementy są zaznaczone na niebiesko.

  • Wyznacz najmniejszą wartość
  • Zamień najmniejszą wartość z pierwszym nieuporządkowanym elementem
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie – implementacja

def selection_sort(my_list):
  list_length = len(my_list)
  for i in range(list_length - 1):

lowest = my_list[i]
index = i
for j in range(i + 1, list_length):
if my_list[j] < lowest:
index = j
lowest = my_list[j]
my_list[i] , my_list[index] = my_list[index] , my_list[i]
return my_list
Struktury danych i algorytmy w Pythonie

Sortowanie przez wybieranie – złożoność

  • Przypadek pesymistyczny: $O(n^2)$
  • Przypadek średni: $\Theta(n^2)$
  • Przypadek optymistyczny: $\Omega(n^2)$
Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami.

Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy element jest zaznaczony na niebiesko, a drugi element został uniesiony ponad pozostałe.

Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy element jest zaznaczony na niebiesko, a drugi element został uniesiony ponad pozostałe. Pierwszy element został przesunięty w prawo.

Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Drugi element jest zaznaczony na niebiesko. Uniesiony element zajął teraz pierwszą pozycję.

Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy i drugi element są zaznaczone na niebiesko.

Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy i drugi element są zaznaczone na niebiesko. Trzeci element został uniesiony ponad pozostałe.

Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi i trzeci element są zaznaczone na niebiesko.

Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi i trzeci element są zaznaczone na niebiesko. Trzeci element został uniesiony ponad pozostałe.

Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi i trzeci element są zaznaczone na niebiesko. Trzeci element został uniesiony ponad pozostałe. Trzeci element został przesunięty w prawo.

Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi i trzeci element są zaznaczone na niebiesko. Trzeci element został uniesiony ponad pozostałe. Trzeci i drugi element zostały przesunięte w prawo.

Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi i trzeci element są zaznaczone na niebiesko. Trzeci element został uniesiony ponad pozostałe. Trzeci, drugi i pierwszy element zostały przesunięte w prawo.

Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi i trzeci element są zaznaczone na niebiesko. Trzeci element został uniesiony ponad pozostałe. Trzeci, drugi i pierwszy element zostały przesunięte w prawo. Uniesiony element zajął teraz pierwszą pozycję.

Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi, trzeci i czwarty element są zaznaczone na niebiesko.

Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi, trzeci i czwarty element są zaznaczone na niebiesko. Piąty element został uniesiony ponad pozostałe.

Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi, trzeci i czwarty element są zaznaczone na niebiesko. Piąty element został uniesiony ponad pozostałe. Czwarty element został przesunięty w prawo.

Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie

Schematyczne przedstawienie listy z nieuporządkowanymi liczbami. Pierwszy, drugi, trzeci i czwarty element są zaznaczone na niebiesko. Piąty element został uniesiony ponad pozostałe. Uniesiony element zajął teraz czwartą pozycję.

Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie – implementacja

def insertion_sort(my_list):
  for i in range(1, len(my_list)):

number_to_order = my_list[i]
j = i - 1
while j >= 0 and number_to_order < my_list[j]:
my_list[j + 1] = my_list[j]
j -= 1
my_list[j + 1] = number_to_order
return my_list
Struktury danych i algorytmy w Pythonie

Sortowanie przez wstawianie – złożoność

  • Przypadek pesymistyczny: $O(n^2)$
  • Przypadek średni: $\Theta(n^2)$
  • Przypadek optymistyczny: $\Omega(n)$
Struktury danych i algorytmy w Pythonie

Ćwiczenia!

Struktury danych i algorytmy w Pythonie

Preparing Video For Download...