Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Implementacja algorytmu sortowania przez wybieranie w języku Python

1
Problem 1

Napisz program sortującysortowaniesortujący niemalejąco n-elementową tablicę dane, zawierającą liczby naturalne. W swojej implementacji wykorzystaj algorytm sortowania przez wybieranie. Przetestuj działanie programu dla następujących danych:

  • n = 7

  • dane = [5, 7, 86, 32, 64, 54, 2]

Specyfikacja problemu:

Dane:

  • n – liczba naturalna dodatnia; rozmiar tablicy dane

  • danen-elementowa tablica liczb naturalnych

Wynik:

Program wypisuje wszystkie elementy tablicy dane, posortowane w kolejności niemalejącej.

RQCKlcMvjtIHV
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
Polecenie 1

Porównaj swoje rozwiązanie z przedstawionym w prezentacji.

R1W4sf3DILf4k1
Wysłuchaj nagrania abstraktu, wyodrębnij jego części i nadaj im tytuły.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Analiza złożoności czasowej i pamięciowej

Aby wyznaczyć złożoność czasową algorytmu sortowania przez wybieranie, przeanalizujmy liczbę operacji podstawowychoperacja podstawowaoperacji podstawowych. Są nimi m.in. porównania i zamiany elementów.

Aby obliczyć liczbę porównań, zastanówmy się, ile razy wykona się wewnętrzna pętla w linii siódmej. W pierwszej iteracji wartość j będzie przyjmować wartości: 1, 2, ..., n - 1. Z każdą kolejną iteracją pętli zewnętrznej pętla wewnętrzna będzie wykonywać o jedną iterację mniej. Możemy zatem policzyć, że pętla ta będzie wykonywać się kolejno n - 1, n - 2, ..., 1 razy. Sumując wyrażenia za pomocą wzoru na sumę ciągu arytmetycznego, otrzymamy liczbę porównań równą . Liczba zamian jest równa . Złożoność czasowa algorytmu sortowania przez wybieranie jest zatem kwadratowa. W notacji wielkiego O będzie to złożoność czasowa .

Ćwiczenie 3 w sekcji „Sprawdź się” pozwoli na weryfikację tego wzoru.

Wyznaczenie złożoności pamięciowej opiera się na obserwacji, że nie używamy dodatkowej pamięci ponad stałą liczbę zmiennych i tablicę danych wejściowych. Jest ona stała, co w notacji wielkiego O zapisujemy jako . Algorytm sortowania przez wybieranie jest zatem algorytmem sortowania w miejscu.

Słownik

operacja podstawowa
operacja podstawowa

inaczej operacja dominująca; operacja wykonywana wielokrotnie, której nie możemy podzielić na mniejsze elementy; przykładem takich operacji są m.in. podstawowe operacje arytmetyczne (dodawanie, odejmowanie mnożenie, dzielenie), porównania czy inkrementacje

porządek sortowania
porządek sortowania

określa kryteria sortowania dla określonych danych

sortowanie
sortowanie

porządkowanie elementów zbioru ze względu na wybraną ich cechę (np. wiek, wysokość, kolejność alfabetyczną itp.)

tablica
tablica

struktura danych, której zadaniem jest przechowywanie w zorganizowany sposób zbioru danych tego samego typu, dostępnych za pomocą indeksu (klucza)