Algorytm sortowania pozycyjnego dat – podsumowanie

Wiesz już, że w algorytmie sortowania pozycyjnego dat elementy składające się z wielu pozycji  porządkujemy w kolejności od najmniej znaczących do najbardziej znaczących. Przypomnijmy specyfikację problemu:

Specyfikacja problemu:

Dane:

  • daty – lista łańcuchów znaków; każda z dat zapisana jest w formacie rrrr‑mm‑dd

Wynik:

  • daty – lista łańcuchów znaków zawierająca daty ułożone w kolejności chronologicznejchronologiachronologicznej

Daty są przedstawione w formacie rrrr‑mm‑dd. Oznacza to, że cyfra najmniej znacząca (liczba jedności w liczbie reprezentującej dzień) znajduje się na skrajnie prawej pozycji, a cyfra najbardziej znacząca - na skrajnie lewej pozycji (liczba tysięcy w liczbie reprezentującej rok). W sortowaniu pozycyjnym zaczynamy od najmniej znaczącej cyfry, czyli od cyfry jedności w liczbie reprezentującej dzień (od prawej strony). Następnie należy sortować daty według kolejnych, coraz bardziej znaczących cyfr – aż do początku łańcucha znaków.

Sortowanie pozycyjne wymaga dodatkowo pomocniczego stabilnego algorytmu sortującegostabilny algorytm sortowaniastabilnego algorytmu sortującego. W naszej implementacji wykorzystamy algorytm sortowania kubełkowego.

Przykład 1

Załóżmy, że mamy kilka dokumentów zawierających różne daty, które chcemy uporządkować w kolejności chronologicznej.

Linia 1. daty znak równości otwórz nawias kwadratowy. Linia 2. cudzysłów 2020 minus 02 minus 01 cudzysłów przecinek. Linia 3. cudzysłów 2018 minus 03 minus 03 cudzysłów przecinek. Linia 4. cudzysłów 2020 minus 01 minus 10 cudzysłów przecinek. Linia 5. cudzysłów 2019 minus 11 minus 19 cudzysłów. Linia 6. zamknij nawias kwadratowy.

W pierwszym kroku porządkujemy daty, sprawdzając wartość cyfry jedności liczby reprezentującej dzień (skrajnie prawa liczba) i sortując je niemalejąco według wartości tej cyfry.

Linia 1. daty znak równości otwórz nawias kwadratowy. Linia 2. cudzysłów 2020 minus 01 minus 10 cudzysłów przecinek. Linia 3. cudzysłów 2020 minus 02 minus 01 cudzysłów przecinek. Linia 4. cudzysłów 2018 minus 03 minus 03 cudzysłów przecinek. Linia 5. cudzysłów 2019 minus 11 minus 19 cudzysłów. Linia 6. zamknij nawias kwadratowy.

W kolejnym kroku sortujemy daty według wartości cyfry dziesiątek liczby reprezentującej dzień.

Linia 1. daty znak równości otwórz nawias kwadratowy. Linia 2. cudzysłów 2020 minus 02 minus 01 cudzysłów przecinek. Linia 3. cudzysłów 2018 minus 03 minus 03 cudzysłów przecinek. Linia 4. cudzysłów 2020 minus 01 minus 10 cudzysłów przecinek. Linia 5. cudzysłów 2019 minus 11 minus 19 cudzysłów. Linia 6. zamknij nawias kwadratowy.

Następnie pomijamy separator (myślnik) i sortujemy według cyfry jedności liczby reprezentującej miesiąc.

Linia 1. daty znak równości otwórz nawias kwadratowy. Linia 2. cudzysłów 2020 minus 01 minus 10 cudzysłów przecinek. Linia 3. cudzysłów 2019 minus 11 minus 19 cudzysłów przecinek. Linia 4. cudzysłów 2020 minus 02 minus 01 cudzysłów przecinek. Linia 5. cudzysłów 2018 minus 03 minus 03 cudzysłów. Linia 6. zamknij nawias kwadratowy.

Dalej sortujemy według cyfry dziesiątek liczby reprezentującej miesiąc.

Linia 1. daty znak równości otwórz nawias kwadratowy. Linia 2. cudzysłów 2020 minus 01 minus 10 cudzysłów przecinek. Linia 3. cudzysłów 2020 minus 02 minus 01 cudzysłów przecinek. Linia 4. cudzysłów 2018 minus 03 minus 03 cudzysłów przecinek. Linia 5. cudzysłów 2019 minus 11 minus 19 cudzysłów. Linia 6. zamknij nawias kwadratowy.

Ponownie pomijamy separator (myślnik) i sortujemy według cyfry jedności liczby reprezentującej rok.

Linia 1. daty znak równości otwórz nawias kwadratowy. Linia 2. cudzysłów 2020 minus 01 minus 10 cudzysłów przecinek. Linia 3. cudzysłów 2020 minus 02 minus 01 cudzysłów przecinek. Linia 4. cudzysłów 2018 minus 03 minus 03 cudzysłów przecinek. Linia 5. cudzysłów 2019 minus 11 minus 19 cudzysłów. Linia 6. zamknij nawias kwadratowy.

Powtarzamy sortowanie według cyfr dziesiątek, setek, tysięcy liczby reprezentującej rok, tym samym kończąc algorytm.

Linia 1. daty znak równości otwórz nawias kwadratowy. Linia 2. cudzysłów 2018 minus 03 minus 03 cudzysłów przecinek. Linia 3. cudzysłów 2019 minus 11 minus 19 cudzysłów przecinek. Linia 4. cudzysłów 2020 minus 01 minus 10 cudzysłów przecinek. Linia 5. cudzysłów 2020 minus 02 minus 01 cudzysłów. Linia 6. zamknij nawias kwadratowy.
1
Przykład 2

Przygotujmy program, który zrealizuje sortowanie pozycyjne dat według algorytmu przedstawionego powyżej. Algorytm będzie zgodny ze specyfikacją podaną na początku tej sekcji. W szczególności założymy, że wszystkie daty w danych wejściowych zapisane są według tego samego formatu (rrrr‑mm‑dd). Do sortowania na kolejnych pozycjach wybieramy algorytm sortowania kubełkowego, który jest algorytmem stabilnym.

Sortowanie będzie polegać na ośmiokrotnym wywołaniu algorytmu sortowania kubełkowego, po dwa wywołania na liczby reprezentujące dni i miesiące i cztery wywołania na liczbę reprezentującą rok. Myślniki zostaną pominięte.

Na początek zaimplementujmy funkcję realizującą sortowanie kubełkowe w porządku niemalejącym. Więcej informacji o tym algorytmie znajdziesz w odpowiednim materialePPpmzST7zodpowiednim materiale.

Specyfikacja problemu:

Dane:

  • daty – lista łańcuchów znaków; każda z dat zapisana jest w formacie rrrr‑mm‑dd

  • pozycja – liczba naturalna; pozycja cyfry w łańcuchu znaków, według której zostanie posortowana lista daty

Wynik:

  • daty – lista łańcuchów znaków posortowana niemalejąco według cyfry pod indeksem pozycja

Linia 1. def sortowanie podkreślnik pozycyjne otwórz nawias okrągły daty przecinek pozycja zamknij nawias okrągły dwukropek. Linia 2. kubelki znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 3. for cyfra in range otwórz nawias okrągły 10 zamknij nawias okrągły dwukropek. Linia 4. kratka tworzymy kubełki dla każdej cyfry. Linia 5. kratka w systemie dziesiętnym. Linia 6. kubelki kropka append otwórz nawias okrągły otwórz nawias kwadratowy zamknij nawias kwadratowy zamknij nawias okrągły. Linia 8. for i in range otwórz nawias okrągły len otwórz nawias okrągły daty zamknij nawias okrągły zamknij nawias okrągły dwukropek. Linia 9. kratka określamy wartość cyfry. Linia 10. kratka według której sortujemy. Linia 11. wartosc znak równości int otwórz nawias okrągły daty otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy zamknij nawias okrągły. Linia 13. kratka wkładamy datę do odpowiedniego kubełka. Linia 14. kubelki otwórz nawias kwadratowy wartosc zamknij nawias kwadratowy kropka append otwórz nawias okrągły daty otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły. Linia 16. kratka tworzymy nową listę przecinek która będzie listą wyściową. Linia 17. daty podkreślnik posortowane znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 19. for i in range otwórz nawias okrągły 10 zamknij nawias okrągły dwukropek. Linia 20. kratka po kolei odczytujemy liczby w kubełkach. Linia 21. kratka i dodajemy do wynikowej listy. Linia 22. for j in range otwórz nawias okrągły len otwórz nawias okrągły kubelki otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły dwukropek. Linia 23. daty podkreślnik posortowane kropka append otwórz nawias okrągły kubelki otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy zamknij nawias okrągły. Linia 25. kratka zwracamy listę z posortowanymi datami. Linia 26. kratka według cyfry na indeksie pozycja. Linia 27. return daty podkreślnik posortowane.

Następnie przystępujemy do napisania pętli, która posortuje całą listę daty według wszystkich pozycji - od najmniej do najbardziej znaczącej.

Linia 1. kratka rozpoczynamy od końca napisu przecinek to znaczy od indeksu 9. Linia 2. kratka otwórz nawias okrągły daty w formacie rrrr minus mm minus dd mają 10 znaków zamknij nawias okrągły. Linia 3. kratka Takie parametry instrukcji range spowodują przecinek że indeks i będzie zmieniał się. Linia 4. kratka następująco dwukropek 9 przecinek 8 przecinek kropka kropka kropka przecinek 0. Linia 5. for i in range otwórz nawias okrągły 9 przecinek minus 1 przecinek minus 1 zamknij nawias okrągły dwukropek. Linia 6. if i znak równości znak równości 4 or i znak równości znak równości 7 dwukropek. Linia 7. kratka pomijamy myślniki. Linia 8. continue. Linia 10. daty znak równości sortowanie podkreślnik pozycyjne otwórz nawias okrągły daty przecinek i zamknij nawias okrągły.

Na koniec wyświetlamy posortowane daty:

Linia 1. for i in range otwórz nawias okrągły len otwórz nawias okrągły daty zamknij nawias okrągły zamknij nawias okrągły dwukropek. Linia 2. print otwórz nawias okrągły daty otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły.

Oto cały program wraz z przykładowymi datami:

Linia 1. def sortowanie podkreślnik pozycyjne otwórz nawias okrągły daty przecinek pozycja zamknij nawias okrągły dwukropek. Linia 2. kubelki znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 3. for cyfra in range otwórz nawias okrągły 10 zamknij nawias okrągły dwukropek. Linia 4. kratka tworzymy kubełki dla każdej cyfry. Linia 5. kratka w systemie dziesiętnym. Linia 6. kubelki kropka append otwórz nawias okrągły otwórz nawias kwadratowy zamknij nawias kwadratowy zamknij nawias okrągły. Linia 8. for i in range otwórz nawias okrągły len otwórz nawias okrągły daty zamknij nawias okrągły zamknij nawias okrągły dwukropek. Linia 9. kratka określamy wartość cyfry. Linia 10. kratka według której sortujemy. Linia 11. wartosc znak równości int otwórz nawias okrągły daty otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy zamknij nawias okrągły. Linia 13. kratka wkładamy datę do odpowiedniego kubełka. Linia 14. kubelki otwórz nawias kwadratowy wartosc zamknij nawias kwadratowy kropka append otwórz nawias okrągły daty otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły. Linia 16. kratka tworzymy nową listę przecinek która będzie listą wyściową. Linia 17. daty podkreślnik posortowane znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 19. for i in range otwórz nawias okrągły 10 zamknij nawias okrągły dwukropek. Linia 20. kratka po kolei odczytujemy liczby w kubełkach. Linia 21. kratka i dodajemy do wynikowej listy. Linia 22. for j in range otwórz nawias okrągły len otwórz nawias okrągły kubelki otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły dwukropek. Linia 23. daty podkreślnik posortowane kropka append otwórz nawias okrągły kubelki otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy zamknij nawias okrągły. Linia 25. kratka zwracamy listę z posortowanymi datami. Linia 26. kratka według cyfry na indeksie pozycja. Linia 27. return daty podkreślnik posortowane. Linia 29. daty znak równości otwórz nawias kwadratowy. Linia 30. cudzysłów 2018 minus 03 minus 03 cudzysłów przecinek cudzysłów 2018 minus 03 minus 04 cudzysłów przecinek cudzysłów 2018 minus 03 minus 02 cudzysłów przecinek cudzysłów 2018 minus 02 minus 03 cudzysłów przecinek cudzysłów 2018 minus 04 minus 03 cudzysłów przecinek. Linia 31. cudzysłów 2000 minus 03 minus 03 cudzysłów przecinek cudzysłów 2000 minus 03 minus 04 cudzysłów przecinek cudzysłów 2000 minus 03 minus 02 cudzysłów przecinek cudzysłów 2000 minus 02 minus 03 cudzysłów przecinek cudzysłów 2000 minus 04 minus 03 cudzysłów przecinek. Linia 32. cudzysłów 2020 minus 03 minus 03 cudzysłów przecinek cudzysłów 2020 minus 03 minus 04 cudzysłów przecinek cudzysłów 2020 minus 03 minus 02 cudzysłów przecinek cudzysłów 2020 minus 02 minus 03 cudzysłów przecinek cudzysłów 2020 minus 04 minus 03 cudzysłów przecinek. Linia 33. zamknij nawias kwadratowy. Linia 35. kratka rozpoczynamy od końca napisu przecinek to znaczy od indeksu 9. Linia 36. kratka otwórz nawias okrągły daty w formacie rrrr minus mm minus dd mają 10 znaków zamknij nawias okrągły. Linia 37. kratka Takie parametry instrukcji range spowodują przecinek że indeks i będzie zmieniał się. Linia 38. kratka następująco dwukropek 9 przecinek 8 przecinek kropka kropka kropka przecinek 0. Linia 39. for i in range otwórz nawias okrągły 9 przecinek minus 1 przecinek minus 1 zamknij nawias okrągły dwukropek. Linia 40. if i znak równości znak równości 4 or i znak równości znak równości 7 dwukropek. Linia 41. kratka pomijamy myślniki. Linia 42. continue. Linia 44. daty znak równości sortowanie podkreślnik pozycyjne otwórz nawias okrągły daty przecinek i zamknij nawias okrągły. Linia 46. for i in range otwórz nawias okrągły len otwórz nawias okrągły daty zamknij nawias okrągły zamknij nawias okrągły dwukropek. Linia 47. print otwórz nawias okrągły daty otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły.

Oto wynik działania programu:

Linia 1. 2000 minus 02 minus 03. Linia 2. 2000 minus 03 minus 02. Linia 3. 2000 minus 03 minus 03. Linia 4. 2000 minus 03 minus 04. Linia 5. 2000 minus 04 minus 03. Linia 6. 2018 minus 02 minus 03. Linia 7. 2018 minus 03 minus 02. Linia 8. 2018 minus 03 minus 03. Linia 9. 2018 minus 03 minus 04. Linia 10. 2018 minus 04 minus 03. Linia 11. 2020 minus 02 minus 03. Linia 12. 2020 minus 03 minus 02. Linia 13. 2020 minus 03 minus 03. Linia 14. 2020 minus 03 minus 04. Linia 15. 2020 minus 04 minus 03.
1
Przykład 3

Opierając się na powyższym przykładzie, stworzymy program pokazujący wyniki sortowania losowych dat oraz wizualizujący za pomocą modułu matplotlibmatplotlibmatplotlib (instancja modułu została opisana w e‑materiale Modelowanie ruchów Browna w języku PythonP8dnxvaSiModelowanie ruchów Browna w języku Python) zależność liczby operacji od długości wejściowej listy danych. Na początek zmodyfikujemy funkcję sortowanie_pozycyjne, tak aby zliczała operacje dodawania i pobierania dat z kubełków:

Specyfikacja problemu:

Dane:

  • daty – lista łańcuchów znaków; każda z dat zapisana jest w formacie rrrr‑mm‑dd

  • pozycja – liczba naturalna; pozycja cyfry w łańcuchu znaków, według której zostanie posortowana lista daty

Wynik:

  • daty – lista łańcuchów znaków posortowana niemalejąco według cyfry pod indeksem pozycja

  • operacje – liczba operacji wykonanych na liście dat

Linia 1. def sortowanie podkreślnik pozycyjne otwórz nawias okrągły daty przecinek pozycja zamknij nawias okrągły dwukropek. Linia 3. kratka liczba operacji na liście daty. Linia 4. operacje znak równości 0. Linia 6. kubelki znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 7. for cyfra in range otwórz nawias okrągły 10 zamknij nawias okrągły dwukropek. Linia 8. kratka tworzymy kubełki dla każdej cyfry. Linia 9. kratka w systemie dziesiętnym. Linia 10. kubelki kropka append otwórz nawias okrągły otwórz nawias kwadratowy zamknij nawias kwadratowy zamknij nawias okrągły. Linia 12. for i in range otwórz nawias okrągły len otwórz nawias okrągły daty zamknij nawias okrągły zamknij nawias okrągły dwukropek. Linia 13. kratka określamy wartość cyfry. Linia 14. kratka według której sortujemy. Linia 15. wartosc znak równości int otwórz nawias okrągły daty otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy zamknij nawias okrągły. Linia 17. kratka wkładamy datę do odpowiedniego kubełka. Linia 18. kubelki otwórz nawias kwadratowy wartosc zamknij nawias kwadratowy kropka append otwórz nawias okrągły daty otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły. Linia 19. operacje plus znak równości 1. Linia 21. kratka tworzymy nową listę przecinek która będzie listą wyściową. Linia 22. daty podkreślnik posortowane znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 24. for i in range otwórz nawias okrągły 10 zamknij nawias okrągły dwukropek. Linia 25. kratka po kolei odczytujemy liczby w kubełkach. Linia 26. kratka i dodajemy do wynikowej listy. Linia 27. for j in range otwórz nawias okrągły len otwórz nawias okrągły kubelki otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły dwukropek. Linia 28. daty podkreślnik posortowane kropka append otwórz nawias okrągły kubelki otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy zamknij nawias okrągły. Linia 29. operacje plus znak równości 1. Linia 31. kratka zwracamy listę z posortowanymi datami. Linia 32. kratka według cyfry na indeksie pozycja. Linia 33. kratka oraz liczbę operacji. Linia 34. return daty podkreślnik posortowane przecinek operacje.

Następnie dodamy do programu poniższe funkcje:

  • funkcja sortuj()

Funkcja ta zawiera kod głównego programu z powyższego przykładu. Dodatkowo zwraca liczbę operacji wykonanych na liście daty. Są to operacje dodania daty do kubełka i odczytania jej z niego. Funkcja wypisuje też dane wejściowe, wyjściowe, długość listy danych i liczbę operacji.

Specyfikacja problemu:

Dane:

  • daty – lista łańcuchów znaków; każda data zapisana w formacie rrrr‑mm‑dd

Wynik:

  • daty – lista łańcuchów znaków; daty posortowane chronologicznie

  • operacje – liczba operacji wykonanych na liście dat

Linia 1. def sortuj otwórz nawias okrągły daty zamknij nawias okrągły dwukropek. Linia 3. print otwórz nawias okrągły cudzysłów minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus cudzysłów zamknij nawias okrągły. Linia 4. print otwórz nawias okrągły cudzysłów wejście dwukropek cudzysłów przecinek daty zamknij nawias okrągły. Linia 6. kratka liczba operacji na liście daty. Linia 7. operacje znak równości 0. Linia 9. kratka rozpoczynamy od końca napisu przecinek to znaczy od indeksu 9. Linia 10. kratka otwórz nawias okrągły daty w formacie rrrr minus mm minus dd mają 10 znaków zamknij nawias okrągły. Linia 11. kratka Takie parametry instrukcji range spowodują przecinek że indeks i będzie zmieniał się. Linia 12. kratka następująco dwukropek 9 przecinek 8 przecinek kropka kropka kropka przecinek 0. Linia 13. for i in range otwórz nawias okrągły 9 przecinek minus 1 przecinek minus 1 zamknij nawias okrągły dwukropek. Linia 14. if i znak równości znak równości 4 or i znak równości znak równości 7 dwukropek. Linia 15. kratka pomijamy myślniki. Linia 16. continue. Linia 18. daty przecinek operacje podkreślnik teraz znak równości sortowanie podkreślnik pozycyjne otwórz nawias okrągły daty przecinek i zamknij nawias okrągły. Linia 19. operacje plus znak równości operacje podkreślnik teraz. Linia 21. print otwórz nawias okrągły cudzysłów wyjście dwukropek cudzysłów przecinek daty zamknij nawias okrągły. Linia 22. print otwórz nawias okrągły cudzysłów długość listy daty dwukropek cudzysłów przecinek len otwórz nawias okrągły daty zamknij nawias okrągły przecinek cudzysłów operacje dwukropek cudzysłów przecinek operacje zamknij nawias okrągły. Linia 23. print otwórz nawias okrągły cudzysłów minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus cudzysłów zamknij nawias okrągły. Linia 25. return daty przecinek operacje.
  • funkcja tworz_losowa_date()

Funkcja ta generuje losową datę i zwraca ją w formacie rrrr‑mm‑dd.

Specyfikacja problemu:

Wynik:

  • data – ciąg zanaków postaci rrrr‑mm‑dd; wygenerowana losowo data

Linia 1. def tworz podkreślnik losowa podkreślnik date otwórz nawias okrągły zamknij nawias okrągły dwukropek. Linia 2. from random import randint as losowa podkreślnik liczba. Linia 4. kratka funkcja tworzy losową datę. Linia 5. kratka funkcja zfill otwórz nawias okrągły x zamknij nawias okrągły uzupełnia liczbę zerami wiodącymi do podanej długości x. Linia 6. dzien znak równości str otwórz nawias okrągły losowa podkreślnik liczba otwórz nawias okrągły 1 przecinek 31 zamknij nawias okrągły zamknij nawias okrągły kropka zfill otwórz nawias okrągły 2 zamknij nawias okrągły. Linia 7. miesiac znak równości str otwórz nawias okrągły losowa podkreślnik liczba otwórz nawias okrągły 1 przecinek 12 zamknij nawias okrągły zamknij nawias okrągły kropka zfill otwórz nawias okrągły 2 zamknij nawias okrągły. Linia 8. rok znak równości str otwórz nawias okrągły losowa podkreślnik liczba otwórz nawias okrągły 1900 przecinek 2020 zamknij nawias okrągły zamknij nawias okrągły. Linia 10. data znak równości rok plus cudzysłów minus cudzysłów plus miesiac plus cudzysłów minus cudzysłów plus dzien. Linia 11. return data.

Główna funkcja wykonująca wykres wygląda następująco:

Linia 1. def wykonaj podkreślnik wykres otwórz nawias okrągły zamknij nawias okrągły dwukropek. Linia 2. import matplotlib kropka pyplot as plt. Linia 4. kratka stwórz listę długości listy danych. Linia 5. kratka lista zawiera wartości 4 przecinek 8 przecinek kropka kropka kropka przecinek 32. Linia 6. X0 znak równości list otwórz nawias okrągły range otwórz nawias okrągły 4 przecinek 32 plus 1 przecinek 4 zamknij nawias okrągły zamknij nawias okrągły. Linia 7. kratka stwórz listę wyników. Linia 8. Y0 znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 10. for x in X0 dwukropek. Linia 12. daty znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 14. kratka podkreśleniem otwórz nawias okrągły podkreślnik zamknij nawias okrągły zaznaczamy zmienną przecinek z której wartości nie mamy zamiaru skorzystać. Linia 15. for podkreślnik in range otwórz nawias okrągły x zamknij nawias okrągły dwukropek. Linia 16. daty kropka append otwórz nawias okrągły tworz podkreślnik losowa podkreślnik date otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły. Linia 18. daty przecinek operacje znak równości sortuj otwórz nawias okrągły daty zamknij nawias okrągły. Linia 20. kratka dodaj liczbę operacji do punktów danych na osi Y. Linia 21. Y0 kropka append otwórz nawias okrągły operacje zamknij nawias okrągły. Linia 23. plt kropka plot otwórz nawias okrągły X0 przecinek Y0 przecinek label znak równości cudzysłów Liczba operacji sortowania cudzysłów zamknij nawias okrągły. Linia 24. plt kropka xlabel otwórz nawias okrągły cudzysłów Liczba dat do sortowania cudzysłów zamknij nawias okrągły. Linia 25. plt kropka ylabel otwórz nawias okrągły cudzysłów Liczba przeprowadzonych operacji cudzysłów zamknij nawias okrągły. Linia 26. plt kropka xticks otwórz nawias okrągły X0 zamknij nawias okrągły kratka podziałki na osi X. Linia 27. plt kropka yticks otwórz nawias okrągły Y0 zamknij nawias okrągły kratka podziałki na osi Y. Linia 28. plt kropka legend otwórz nawias okrągły zamknij nawias okrągły. Linia 29. plt kropka grid otwórz nawias okrągły True zamknij nawias okrągły. Linia 30. plt kropka show otwórz nawias okrągły zamknij nawias okrągły.

Cały kod programu prezentuje się następująco:

Linia 1. def sortowanie podkreślnik pozycyjne otwórz nawias okrągły daty przecinek pozycja zamknij nawias okrągły dwukropek. Linia 3. kratka liczba operacji na liście daty. Linia 4. operacje znak równości 0. Linia 6. kubelki znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 7. for cyfra in range otwórz nawias okrągły 10 zamknij nawias okrągły dwukropek. Linia 8. kratka tworzymy kubełki dla każdej cyfry. Linia 9. kratka w systemie dziesiętnym. Linia 10. kubelki kropka append otwórz nawias okrągły otwórz nawias kwadratowy zamknij nawias kwadratowy zamknij nawias okrągły. Linia 12. for i in range otwórz nawias okrągły len otwórz nawias okrągły daty zamknij nawias okrągły zamknij nawias okrągły dwukropek. Linia 13. kratka określamy wartość cyfry. Linia 14. kratka według której sortujemy. Linia 15. wartosc znak równości int otwórz nawias okrągły daty otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy zamknij nawias okrągły. Linia 17. kratka wkładamy datę do odpowiedniego kubełka. Linia 18. kubelki otwórz nawias kwadratowy wartosc zamknij nawias kwadratowy kropka append otwórz nawias okrągły daty otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły. Linia 19. operacje plus znak równości 1. Linia 21. kratka tworzymy nową listę przecinek która będzie listą wyściową. Linia 22. daty podkreślnik posortowane znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 24. for i in range otwórz nawias okrągły 10 zamknij nawias okrągły dwukropek. Linia 25. kratka po kolei odczytujemy liczby w kubełkach. Linia 26. kratka i dodajemy do wynikowej listy. Linia 27. for j in range otwórz nawias okrągły len otwórz nawias okrągły kubelki otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły dwukropek. Linia 28. daty podkreślnik posortowane kropka append otwórz nawias okrągły kubelki otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy zamknij nawias okrągły. Linia 29. operacje plus znak równości 1. Linia 31. kratka zwracamy listę z posortowanymi datami. Linia 32. kratka według cyfry na indeksie pozycja. Linia 33. kratka oraz liczbę operacji. Linia 34. return daty podkreślnik posortowane przecinek operacje. Linia 37. def sortuj otwórz nawias okrągły daty zamknij nawias okrągły dwukropek. Linia 39. print otwórz nawias okrągły cudzysłów minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus cudzysłów zamknij nawias okrągły. Linia 40. print otwórz nawias okrągły cudzysłów wejście dwukropek cudzysłów przecinek daty zamknij nawias okrągły. Linia 42. kratka liczba operacji na liście daty. Linia 43. operacje znak równości 0. Linia 45. kratka rozpoczynamy od końca napisu przecinek to znaczy od indeksu 9. Linia 46. kratka otwórz nawias okrągły daty w formacie rrrr minus mm minus dd mają 10 znaków zamknij nawias okrągły. Linia 47. kratka Takie parametry instrukcji range spowodują przecinek że indeks i będzie zmieniał się. Linia 48. kratka następująco dwukropek 9 przecinek 8 przecinek kropka kropka kropka przecinek 0. Linia 49. for i in range otwórz nawias okrągły 9 przecinek minus 1 przecinek minus 1 zamknij nawias okrągły dwukropek. Linia 50. if i znak równości znak równości 4 or i znak równości znak równości 7 dwukropek. Linia 51. kratka pomijamy myślniki. Linia 52. continue. Linia 54. daty przecinek operacje podkreślnik teraz znak równości sortowanie podkreślnik pozycyjne otwórz nawias okrągły daty przecinek i zamknij nawias okrągły. Linia 55. operacje plus znak równości operacje podkreślnik teraz. Linia 57. print otwórz nawias okrągły cudzysłów wyjście dwukropek cudzysłów przecinek daty zamknij nawias okrągły. Linia 58. print otwórz nawias okrągły cudzysłów długość listy daty dwukropek cudzysłów przecinek len otwórz nawias okrągły daty zamknij nawias okrągły przecinek cudzysłów operacje dwukropek cudzysłów przecinek operacje zamknij nawias okrągły. Linia 59. print otwórz nawias okrągły cudzysłów minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus cudzysłów zamknij nawias okrągły. Linia 61. return daty przecinek operacje. Linia 64. def tworz podkreślnik losowa podkreślnik date otwórz nawias okrągły zamknij nawias okrągły dwukropek. Linia 65. from random import randint as losowa podkreślnik liczba. Linia 67. kratka funkcja tworzy losową datę. Linia 68. kratka funkcja zfill otwórz nawias okrągły x zamknij nawias okrągły uzupełnia liczbę zerami wiodącymi do podanej długości x. Linia 69. dzien znak równości str otwórz nawias okrągły losowa podkreślnik liczba otwórz nawias okrągły 1 przecinek 31 zamknij nawias okrągły zamknij nawias okrągły kropka zfill otwórz nawias okrągły 2 zamknij nawias okrągły. Linia 70. miesiac znak równości str otwórz nawias okrągły losowa podkreślnik liczba otwórz nawias okrągły 1 przecinek 12 zamknij nawias okrągły zamknij nawias okrągły kropka zfill otwórz nawias okrągły 2 zamknij nawias okrągły. Linia 71. rok znak równości str otwórz nawias okrągły losowa podkreślnik liczba otwórz nawias okrągły 1900 przecinek 2020 zamknij nawias okrągły zamknij nawias okrągły. Linia 73. data znak równości rok plus cudzysłów minus cudzysłów plus miesiac plus cudzysłów minus cudzysłów plus dzien. Linia 74. return data. Linia 77. def wykonaj podkreślnik wykres otwórz nawias okrągły zamknij nawias okrągły dwukropek. Linia 78. import matplotlib kropka pyplot as plt. Linia 80. kratka stwórz listę długości listy danych. Linia 81. kratka lista zawiera wartości 4 przecinek 8 przecinek kropka kropka kropka przecinek 32. Linia 82. X0 znak równości list otwórz nawias okrągły range otwórz nawias okrągły 4 przecinek 32 plus 1 przecinek 4 zamknij nawias okrągły zamknij nawias okrągły. Linia 83. kratka stwórz listę wyników. Linia 84. Y0 znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 86. for x in X0 dwukropek. Linia 88. daty znak równości otwórz nawias kwadratowy zamknij nawias kwadratowy. Linia 90. kratka podkreśleniem otwórz nawias okrągły podkreślnik zamknij nawias okrągły zaznaczamy zmienną przecinek z której wartości nie mamy zamiaru skorzystać. Linia 91. for podkreślnik in range otwórz nawias okrągły x zamknij nawias okrągły dwukropek. Linia 92. daty kropka append otwórz nawias okrągły tworz podkreślnik losowa podkreślnik date otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły. Linia 94. daty przecinek operacje znak równości sortuj otwórz nawias okrągły daty zamknij nawias okrągły. Linia 96. kratka dodaj liczbę operacji do punktów danych na osi Y. Linia 97. Y0 kropka append otwórz nawias okrągły operacje zamknij nawias okrągły. Linia 99. plt kropka plot otwórz nawias okrągły X0 przecinek Y0 przecinek label znak równości cudzysłów Liczba operacji sortowania cudzysłów zamknij nawias okrągły. Linia 100. plt kropka xlabel otwórz nawias okrągły cudzysłów Liczba dat do sortowania cudzysłów zamknij nawias okrągły. Linia 101. plt kropka ylabel otwórz nawias okrągły cudzysłów Liczba przeprowadzonych operacji cudzysłów zamknij nawias okrągły. Linia 102. plt kropka xticks otwórz nawias okrągły X0 zamknij nawias okrągły kratka podziałki na osi X. Linia 103. plt kropka yticks otwórz nawias okrągły Y0 zamknij nawias okrągły kratka podziałki na osi Y. Linia 104. plt kropka legend otwórz nawias okrągły zamknij nawias okrągły. Linia 105. plt kropka grid otwórz nawias okrągły True zamknij nawias okrągły. Linia 106. plt kropka show otwórz nawias okrągły zamknij nawias okrągły. Linia 108. wykonaj podkreślnik wykres otwórz nawias okrągły zamknij nawias okrągły.

Wynikiem działania programu jest wykres przedstawiający liniową zależność liczby operacji dominujących (wstawiania i pobierania dat z kubełków) od liczby danych wejściowych. Jest to zgodne z oczekiwaniami, przy stałej długości sortowanych dat.

R1W4GcllzCr6A
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

W konsoli otrzymujemy następujące komunikaty, które mówią nam konkretnie, ile operacji wykonano i na jakich danych.

Linia 1. minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 2. wejście dwukropek otwórz nawias kwadratowy apostrof 1974 minus 04 minus 14 apostrof przecinek apostrof 1910 minus 05 minus 06 apostrof przecinek apostrof 1934 minus 01 minus 02 apostrof przecinek apostrof 1968 minus 05 minus 04 apostrof zamknij nawias kwadratowy. Linia 3. wyjście dwukropek otwórz nawias kwadratowy apostrof 1910 minus 05 minus 06 apostrof przecinek apostrof 1934 minus 01 minus 02 apostrof przecinek apostrof 1968 minus 05 minus 04 apostrof przecinek apostrof 1974 minus 04 minus 14 apostrof zamknij nawias kwadratowy. Linia 4. długość listy daty dwukropek 4 operacje dwukropek 64. Linia 5. minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 6. minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 7. wejście dwukropek otwórz nawias kwadratowy apostrof 1955 minus 06 minus 11 apostrof przecinek apostrof 1976 minus 11 minus 03 apostrof przecinek apostrof 1927 minus 10 minus 21 apostrof przecinek apostrof 2005 minus 12 minus 11 apostrof przecinek apostrof 1920 minus 07 minus 12 apostrof przecinek apostrof 1937 minus 10 minus 05 apostrof przecinek apostrof 1931 minus 08 minus 23 apostrof przecinek apostrof 1926 minus 07 minus 05 apostrof zamknij nawias kwadratowy. Linia 8. wyjście dwukropek otwórz nawias kwadratowy apostrof 1920 minus 07 minus 12 apostrof przecinek apostrof 1926 minus 07 minus 05 apostrof przecinek apostrof 1927 minus 10 minus 21 apostrof przecinek apostrof 1931 minus 08 minus 23 apostrof przecinek apostrof 1937 minus 10 minus 05 apostrof przecinek apostrof 1955 minus 06 minus 11 apostrof przecinek apostrof 1976 minus 11 minus 03 apostrof przecinek apostrof 2005 minus 12 minus 11 apostrof zamknij nawias kwadratowy. Linia 9. długość listy daty dwukropek 8 operacje dwukropek 128. Linia 10. minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 11. minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 12. wejście dwukropek otwórz nawias kwadratowy apostrof 1958 minus 02 minus 16 apostrof przecinek apostrof 1904 minus 04 minus 04 apostrof przecinek apostrof 1906 minus 10 minus 20 apostrof przecinek apostrof 1907 minus 06 minus 08 apostrof przecinek apostrof 1969 minus 08 minus 31 apostrof przecinek apostrof 1922 minus 02 minus 08 apostrof przecinek apostrof 1969 minus 10 minus 28 apostrof przecinek apostrof 1999 minus 02 minus 07 apostrof przecinek apostrof 1978 minus 05 minus 04 apostrof przecinek apostrof 2012 minus 11 minus 28 apostrof przecinek apostrof 1943 minus 06 minus 17 apostrof przecinek apostrof 1947 minus 07 minus 23 apostrof zamknij nawias kwadratowy. Linia 13. wyjście dwukropek otwórz nawias kwadratowy apostrof 1904 minus 04 minus 04 apostrof przecinek apostrof 1906 minus 10 minus 20 apostrof przecinek apostrof 1907 minus 06 minus 08 apostrof przecinek apostrof 1922 minus 02 minus 08 apostrof przecinek apostrof 1943 minus 06 minus 17 apostrof przecinek apostrof 1947 minus 07 minus 23 apostrof przecinek apostrof 1958 minus 02 minus 16 apostrof przecinek apostrof 1969 minus 08 minus 31 apostrof przecinek apostrof 1969 minus 10 minus 28 apostrof przecinek apostrof 1978 minus 05 minus 04 apostrof przecinek apostrof 1999 minus 02 minus 07 apostrof przecinek apostrof 2012 minus 11 minus 28 apostrof zamknij nawias kwadratowy. Linia 14. długość listy daty dwukropek 12 operacje dwukropek 192. Linia 15. minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 16. minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 17. wejście dwukropek otwórz nawias kwadratowy apostrof 1931 minus 04 minus 17 apostrof przecinek apostrof 2009 minus 05 minus 30 apostrof przecinek apostrof 1999 minus 07 minus 11 apostrof przecinek apostrof 1996 minus 08 minus 19 apostrof przecinek apostrof 1988 minus 05 minus 21 apostrof przecinek apostrof 1918 minus 05 minus 11 apostrof przecinek apostrof 1908 minus 10 minus 20 apostrof przecinek apostrof 1952 minus 04 minus 27 apostrof przecinek apostrof 2008 minus 04 minus 03 apostrof przecinek apostrof 1984 minus 06 minus 14 apostrof przecinek apostrof 1943 minus 06 minus 24 apostrof przecinek apostrof 1926 minus 09 minus 16 apostrof przecinek apostrof 1978 minus 12 minus 23 apostrof przecinek apostrof 1949 minus 04 minus 17 apostrof przecinek apostrof 2012 minus 06 minus 24 apostrof przecinek apostrof 1935 minus 03 minus 17 apostrof zamknij nawias kwadratowy. Linia 18. wyjście dwukropek otwórz nawias kwadratowy apostrof 1908 minus 10 minus 20 apostrof przecinek apostrof 1918 minus 05 minus 11 apostrof przecinek apostrof 1926 minus 09 minus 16 apostrof przecinek apostrof 1931 minus 04 minus 17 apostrof przecinek apostrof 1935 minus 03 minus 17 apostrof przecinek apostrof 1943 minus 06 minus 24 apostrof przecinek apostrof 1949 minus 04 minus 17 apostrof przecinek apostrof 1952 minus 04 minus 27 apostrof przecinek apostrof 1978 minus 12 minus 23 apostrof przecinek apostrof 1984 minus 06 minus 14 apostrof przecinek apostrof 1988 minus 05 minus 21 apostrof przecinek apostrof 1996 minus 08 minus 19 apostrof przecinek apostrof 1999 minus 07 minus 11 apostrof przecinek apostrof 2008 minus 04 minus 03 apostrof przecinek apostrof 2009 minus 05 minus 30 apostrof przecinek apostrof 2012 minus 06 minus 24 apostrof zamknij nawias kwadratowy. Linia 19. długość listy daty dwukropek 16 operacje dwukropek 256. Linia 20. minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 21. minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 22. wejście dwukropek otwórz nawias kwadratowy apostrof 1928 minus 09 minus 09 apostrof przecinek apostrof 1949 minus 02 minus 10 apostrof przecinek apostrof 1905 minus 07 minus 25 apostrof przecinek apostrof 1983 minus 10 minus 09 apostrof przecinek apostrof 1957 minus 04 minus 11 apostrof przecinek apostrof 1957 minus 07 minus 28 apostrof przecinek apostrof 1980 minus 04 minus 23 apostrof przecinek apostrof 2005 minus 09 minus 22 apostrof przecinek apostrof 1940 minus 10 minus 10 apostrof przecinek apostrof 1907 minus 11 minus 22 apostrof przecinek apostrof 1900 minus 06 minus 11 apostrof przecinek apostrof 2014 minus 06 minus 11 apostrof przecinek apostrof 2011 minus 05 minus 26 apostrof przecinek apostrof 1901 minus 09 minus 19 apostrof przecinek apostrof 1985 minus 09 minus 13 apostrof przecinek apostrof 1909 minus 12 minus 27 apostrof przecinek apostrof 1924 minus 11 minus 20 apostrof przecinek apostrof 1996 minus 08 minus 29 apostrof przecinek apostrof 1941 minus 01 minus 07 apostrof przecinek apostrof 1940 minus 07 minus 23 apostrof zamknij nawias kwadratowy. Linia 23. wyjście dwukropek otwórz nawias kwadratowy apostrof 1900 minus 06 minus 11 apostrof przecinek apostrof 1901 minus 09 minus 19 apostrof przecinek apostrof 1905 minus 07 minus 25 apostrof przecinek apostrof 1907 minus 11 minus 22 apostrof przecinek apostrof 1909 minus 12 minus 27 apostrof przecinek apostrof 1924 minus 11 minus 20 apostrof przecinek apostrof 1928 minus 09 minus 09 apostrof przecinek apostrof 1940 minus 07 minus 23 apostrof przecinek apostrof 1940 minus 10 minus 10 apostrof przecinek apostrof 1941 minus 01 minus 07 apostrof przecinek apostrof 1949 minus 02 minus 10 apostrof przecinek apostrof 1957 minus 04 minus 11 apostrof przecinek apostrof 1957 minus 07 minus 28 apostrof przecinek apostrof 1980 minus 04 minus 23 apostrof przecinek apostrof 1983 minus 10 minus 09 apostrof przecinek apostrof 1985 minus 09 minus 13 apostrof przecinek apostrof 1996 minus 08 minus 29 apostrof przecinek apostrof 2005 minus 09 minus 22 apostrof przecinek apostrof 2011 minus 05 minus 26 apostrof przecinek apostrof 2014 minus 06 minus 11 apostrof zamknij nawias kwadratowy. Linia 24. długość listy daty dwukropek 20 operacje dwukropek 320. Linia 25. minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 26. minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 27. wejście dwukropek otwórz nawias kwadratowy apostrof 1958 minus 04 minus 08 apostrof przecinek apostrof 1960 minus 07 minus 13 apostrof przecinek apostrof 1968 minus 03 minus 22 apostrof przecinek apostrof 1967 minus 05 minus 26 apostrof przecinek apostrof 1925 minus 10 minus 07 apostrof przecinek apostrof 2014 minus 08 minus 31 apostrof przecinek apostrof 1922 minus 02 minus 29 apostrof przecinek apostrof 1983 minus 10 minus 15 apostrof przecinek apostrof 2011 minus 07 minus 22 apostrof przecinek apostrof 1931 minus 01 minus 12 apostrof przecinek apostrof 1938 minus 03 minus 20 apostrof przecinek apostrof 1905 minus 08 minus 29 apostrof przecinek apostrof 1994 minus 04 minus 11 apostrof przecinek apostrof 1993 minus 02 minus 12 apostrof przecinek apostrof 1974 minus 11 minus 18 apostrof przecinek apostrof 1964 minus 10 minus 13 apostrof przecinek apostrof 1948 minus 02 minus 29 apostrof przecinek apostrof 1975 minus 12 minus 20 apostrof przecinek apostrof 1945 minus 07 minus 26 apostrof przecinek apostrof 2018 minus 11 minus 05 apostrof przecinek apostrof 1975 minus 12 minus 02 apostrof przecinek apostrof 1907 minus 01 minus 06 apostrof przecinek apostrof 1900 minus 03 minus 30 apostrof przecinek apostrof 1969 minus 07 minus 06 apostrof zamknij nawias kwadratowy. Linia 28. wyjście dwukropek otwórz nawias kwadratowy apostrof 1900 minus 03 minus 30 apostrof przecinek apostrof 1905 minus 08 minus 29 apostrof przecinek apostrof 1907 minus 01 minus 06 apostrof przecinek apostrof 1922 minus 02 minus 29 apostrof przecinek apostrof 1925 minus 10 minus 07 apostrof przecinek apostrof 1931 minus 01 minus 12 apostrof przecinek apostrof 1938 minus 03 minus 20 apostrof przecinek apostrof 1945 minus 07 minus 26 apostrof przecinek apostrof 1948 minus 02 minus 29 apostrof przecinek apostrof 1958 minus 04 minus 08 apostrof przecinek apostrof 1960 minus 07 minus 13 apostrof przecinek apostrof 1964 minus 10 minus 13 apostrof przecinek apostrof 1967 minus 05 minus 26 apostrof przecinek apostrof 1968 minus 03 minus 22 apostrof przecinek apostrof 1969 minus 07 minus 06 apostrof przecinek apostrof 1974 minus 11 minus 18 apostrof przecinek apostrof 1975 minus 12 minus 02 apostrof przecinek apostrof 1975 minus 12 minus 20 apostrof przecinek apostrof 1983 minus 10 minus 15 apostrof przecinek apostrof 1993 minus 02 minus 12 apostrof przecinek apostrof 1994 minus 04 minus 11 apostrof przecinek apostrof 2011 minus 07 minus 22 apostrof przecinek apostrof 2014 minus 08 minus 31 apostrof przecinek apostrof 2018 minus 11 minus 05 apostrof zamknij nawias kwadratowy. Linia 29. długość listy daty dwukropek 24 operacje dwukropek 384. Linia 30. minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 31. minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 32. wejście dwukropek otwórz nawias kwadratowy apostrof 1945 minus 04 minus 21 apostrof przecinek apostrof 1982 minus 04 minus 07 apostrof przecinek apostrof 2013 minus 04 minus 11 apostrof przecinek apostrof 1971 minus 05 minus 24 apostrof przecinek apostrof 1975 minus 09 minus 02 apostrof przecinek apostrof 2006 minus 10 minus 30 apostrof przecinek apostrof 2011 minus 08 minus 18 apostrof przecinek apostrof 2002 minus 09 minus 17 apostrof przecinek apostrof 1955 minus 08 minus 24 apostrof przecinek apostrof 2009 minus 08 minus 03 apostrof przecinek apostrof 1921 minus 12 minus 17 apostrof przecinek apostrof 1907 minus 08 minus 19 apostrof przecinek apostrof 1920 minus 05 minus 03 apostrof przecinek apostrof 1982 minus 05 minus 16 apostrof przecinek apostrof 1978 minus 10 minus 16 apostrof przecinek apostrof 1968 minus 09 minus 13 apostrof przecinek apostrof 2012 minus 02 minus 18 apostrof przecinek apostrof 2020 minus 05 minus 09 apostrof przecinek apostrof 1978 minus 01 minus 13 apostrof przecinek apostrof 1956 minus 03 minus 17 apostrof przecinek apostrof 1918 minus 10 minus 10 apostrof przecinek apostrof 1911 minus 06 minus 19 apostrof przecinek apostrof 1934 minus 07 minus 03 apostrof przecinek apostrof 1936 minus 04 minus 04 apostrof przecinek apostrof 1901 minus 10 minus 26 apostrof przecinek apostrof 1916 minus 09 minus 25 apostrof przecinek apostrof 2000 minus 06 minus 02 apostrof przecinek apostrof 1942 minus 11 minus 11 apostrof zamknij nawias kwadratowy. Linia 33. wyjście dwukropek otwórz nawias kwadratowy apostrof 1901 minus 10 minus 26 apostrof przecinek apostrof 1907 minus 08 minus 19 apostrof przecinek apostrof 1911 minus 06 minus 19 apostrof przecinek apostrof 1916 minus 09 minus 25 apostrof przecinek apostrof 1918 minus 10 minus 10 apostrof przecinek apostrof 1920 minus 05 minus 03 apostrof przecinek apostrof 1921 minus 12 minus 17 apostrof przecinek apostrof 1934 minus 07 minus 03 apostrof przecinek apostrof 1936 minus 04 minus 04 apostrof przecinek apostrof 1942 minus 11 minus 11 apostrof przecinek apostrof 1945 minus 04 minus 21 apostrof przecinek apostrof 1955 minus 08 minus 24 apostrof przecinek apostrof 1956 minus 03 minus 17 apostrof przecinek apostrof 1968 minus 09 minus 13 apostrof przecinek apostrof 1971 minus 05 minus 24 apostrof przecinek apostrof 1975 minus 09 minus 02 apostrof przecinek apostrof 1978 minus 01 minus 13 apostrof przecinek apostrof 1978 minus 10 minus 16 apostrof przecinek apostrof 1982 minus 04 minus 07 apostrof przecinek apostrof 1982 minus 05 minus 16 apostrof przecinek apostrof 2000 minus 06 minus 02 apostrof przecinek apostrof 2002 minus 09 minus 17 apostrof przecinek apostrof 2006 minus 10 minus 30 apostrof przecinek apostrof 2009 minus 08 minus 03 apostrof przecinek apostrof 2011 minus 08 minus 18 apostrof przecinek apostrof 2012 minus 02 minus 18 apostrof przecinek apostrof 2013 minus 04 minus 11 apostrof przecinek apostrof 2020 minus 05 minus 09 apostrof zamknij nawias kwadratowy. Linia 34. długość listy daty dwukropek 28 operacje dwukropek 448. Linia 35. minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 36. minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus. Linia 37. wejście dwukropek otwórz nawias kwadratowy apostrof 1983 minus 06 minus 16 apostrof przecinek apostrof 1978 minus 07 minus 17 apostrof przecinek apostrof 2018 minus 02 minus 28 apostrof przecinek apostrof 1965 minus 11 minus 12 apostrof przecinek apostrof 1948 minus 11 minus 27 apostrof przecinek apostrof 1913 minus 01 minus 29 apostrof przecinek apostrof 2014 minus 06 minus 19 apostrof przecinek apostrof 2007 minus 08 minus 07 apostrof przecinek apostrof 2014 minus 06 minus 28 apostrof przecinek apostrof 1964 minus 10 minus 20 apostrof przecinek apostrof 1927 minus 09 minus 18 apostrof przecinek apostrof 2013 minus 09 minus 19 apostrof przecinek apostrof 1965 minus 12 minus 03 apostrof przecinek apostrof 1979 minus 12 minus 25 apostrof przecinek apostrof 1949 minus 12 minus 25 apostrof przecinek apostrof 1908 minus 06 minus 28 apostrof przecinek apostrof 2000 minus 06 minus 19 apostrof przecinek apostrof 1951 minus 01 minus 05 apostrof przecinek apostrof 1999 minus 03 minus 10 apostrof przecinek apostrof 2011 minus 04 minus 14 apostrof przecinek apostrof 1989 minus 02 minus 16 apostrof przecinek apostrof 1900 minus 09 minus 20 apostrof przecinek apostrof 1991 minus 07 minus 30 apostrof przecinek apostrof 2007 minus 11 minus 12 apostrof przecinek apostrof 1934 minus 08 minus 08 apostrof przecinek apostrof 1935 minus 06 minus 30 apostrof przecinek apostrof 1953 minus 07 minus 05 apostrof przecinek apostrof 1920 minus 11 minus 14 apostrof przecinek apostrof 1967 minus 04 minus 22 apostrof przecinek apostrof 1947 minus 04 minus 11 apostrof przecinek apostrof 1903 minus 10 minus 15 apostrof przecinek apostrof 1953 minus 06 minus 21 apostrof zamknij nawias kwadratowy. Linia 38. wyjście dwukropek otwórz nawias kwadratowy apostrof 1900 minus 09 minus 20 apostrof przecinek apostrof 1903 minus 10 minus 15 apostrof przecinek apostrof 1908 minus 06 minus 28 apostrof przecinek apostrof 1913 minus 01 minus 29 apostrof przecinek apostrof 1920 minus 11 minus 14 apostrof przecinek apostrof 1927 minus 09 minus 18 apostrof przecinek apostrof 1934 minus 08 minus 08 apostrof przecinek apostrof 1935 minus 06 minus 30 apostrof przecinek apostrof 1947 minus 04 minus 11 apostrof przecinek apostrof 1948 minus 11 minus 27 apostrof przecinek apostrof 1949 minus 12 minus 25 apostrof przecinek apostrof 1951 minus 01 minus 05 apostrof przecinek apostrof 1953 minus 06 minus 21 apostrof przecinek apostrof 1953 minus 07 minus 05 apostrof przecinek apostrof 1964 minus 10 minus 20 apostrof przecinek apostrof 1965 minus 11 minus 12 apostrof przecinek apostrof 1965 minus 12 minus 03 apostrof przecinek apostrof 1967 minus 04 minus 22 apostrof przecinek apostrof 1978 minus 07 minus 17 apostrof przecinek apostrof 1979 minus 12 minus 25 apostrof przecinek apostrof 1983 minus 06 minus 16 apostrof przecinek apostrof 1989 minus 02 minus 16 apostrof przecinek apostrof 1991 minus 07 minus 30 apostrof przecinek apostrof 1999 minus 03 minus 10 apostrof przecinek apostrof 2000 minus 06 minus 19 apostrof przecinek apostrof 2007 minus 08 minus 07 apostrof przecinek apostrof 2007 minus 11 minus 12 apostrof przecinek apostrof 2011 minus 04 minus 14 apostrof przecinek apostrof 2013 minus 09 minus 19 apostrof przecinek apostrof 2014 minus 06 minus 19 apostrof przecinek apostrof 2014 minus 06 minus 28 apostrof przecinek apostrof 2018 minus 02 minus 28 apostrof zamknij nawias kwadratowy. Linia 39. długość listy daty dwukropek 32 operacje dwukropek 512. Linia 40. minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus.
Dla zainteresowanych

W języku Python istnieje wbudowana funkcja sorted(), która działa w oparciu o zmodyfikowany algorytm Timsort. Algorytm ten należy do tzw. algorytmów hybrydowych, wykorzystuje algorytm sortowania przez scalanie, ale dla dostatecznie małych list elementów przełącza się na algorytm sortowania przez wstawianie.

Więcej informacji o sortowaniu w języku Python można znaleźć w oficjalnej dokumentacji.

Słownik

chronologia
chronologia

(z gr. chronos – czas, logos – słowo) nauka o kolejności występowania zdarzeń

matplotlib
matplotlib

biblioteka służąca do przedstawienia obrazów złożonych z punktów o współrzędnych  x oraz y (wykresów, histogramów, rozkładów itp.); moduł matplotlib nie jest dostępny w standardowej instalacji języka Python - należy go zainstalować, korzystając z mechanizmu pip

stabilny algorytm sortowania
stabilny algorytm sortowania

algorytm sortowania, który w przypadku elementów o równej wartości pozostawi je w takiej samej kolejności, w jakiej były pierwotnie; do stabilnych algorytmów sortowania należą m.in.: sortowanie bąbelkowe, sortowanie przez zliczanie, sortowanie przez wstawianie, sortowanie kubełkowe, sortowanie przez scalanie