Film 1Sortowanie bąbelkowe, przez wstawianie i przez prosty wybór

W filmie umówiono trzy podstawowe algorytmy sortowania (bąbelkowe, przez wstawianie i przez prosty wybór) oraz przedstawiono ich działanie na przykładach.

 karty © Francesco Abrignani/Shutterstock.com

 

Film 2Programowanie w Pythonie. Porządkowanie przez proste wybieranie

Film powtórzeniowy, prezentujący sortowanie przez proste wybieranie realizowane w Pythonie.

Ćwiczenie 0

Zdefiniuj funkcję trzy(a, b, c), której wynikiem jest największa z trzech liczb podanych jako parametr. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji trzy(1, 9, 12) jest 12.
  • Wynikiem funkcji trzy(13, 4, 12) jest 13.

Wskazówka
Na początku za największą liczbę przyjmuje się pierwszą z trzech liczb podanych jako parametr. Następnie bada się, czy druga z liczb jest większa od niej, jeśli tak, to za największą przyjmuje się drugą liczbę. Następnie bada się, czy trzecia z liczb jest większa od niej, jeśli tak, to za największą przyjmuje się trzecią liczbę.

# zdefiniuj funkcję def trzy(a, b, c): pass # testy print(trzy(1, 9, 12)) print(trzy(13, 4, 12))
Wynikiem funkcji trzy(10, 10, 10) jest 10.
testResult = trzy(10, 10, 10)==10
10
trzy(10, 10, 10)
Wynikiem funkcji trzy(112, 99, 112) jest 112.
testResult = trzy(112, 99, 112)==112
112
trzy(112, 99, 112)
Wynikiem funkcji trzy(456, 456, 455) jest 456.
testResult = trzy(456, 456, 455)==456
456
trzy(456, 456, 455)
Rozwiąż ćwiczenie

Ćwiczenie 1Tworzenie listy i dodawanie do niej elementów

Przeanalizuj poniższy kod, odpowiedz na pytania, a następnie sprawdź swoje odpowiedzi
w edytorze.

  1. Jaki element i gdzie dodano do listy za pomocą polecenia w wierszu 2?
  2. Jak należy uzupełnić wiersz 3, aby na końcu listy wstawić liczbę –11?
  3. Jak poprawić zapis w wierszu 4, aby liczba 0 została wstawiona na początku listy, a liczba 23 na jej końcu?
  4. Jaki element i na której pozycji dodano do listy za pomocą polecenia w wierszu 5?
  5. Jaka lista zostanie wypisana na skutek polecenia w wierszu 6?
t = [1, 12, -3, 8] t.append(34) t = # uzupełnij zapis t = t + [0] + [23] t.insert(3, 5) print(t)
Rozwiąż ćwiczenie

Ćwiczenie 2Losowa lista liczb

Zdefiniuj funkcję losuj(rozmiar, od, do) służącą do generowania listy o podanej długości (rozmiar), której elementami są liczby losowe z podanego zakresu (od i do).

from random import randint # zdefiniuj funkcję def losuj(rozmiar, od, do): pass # testy print(losuj(16,1,10)) print(losuj(16,1,10)) print(losuj(16,1,10)) print(losuj(16,1,10))
Rozwiąż ćwiczenie

Ćwiczenie 3Bąbelek

Porównaj kolejne pary elementów listy (pierwszy z drugim, drugi z trzecim itd.). Jeśli pierwszy z nich jest większy niż drugi, to zamień je miejscami. Przeanalizuj dane (zauważ, że największa z liczb w wyniku znalazła się na końcu) i zdefiniowaną poniżej funkcję b(t), której parametrem jest lista liczb, a wynikiem – zmodyfikowana lista. Następnie znajdź i popraw błąd w skrypcie.

  • Wynikiem funkcji b([16, 5, 12, 3, 12]) jest [5, 12, 3, 12, 16].
  • Wynikiem funkcji b([1, 16, 18, 3, 16, 9, 9]) jest [1, 16, 3, 16, 9, 9, 18].
def b(t): for i in range(len(t) - 1): if t[i] < t[i + 1]: t[i], t[i + 1] = t[i + 1], t[i] return t #testy print(b([16, 5, 12, 3, 12])) print(b([1, 16, 18, 3, 16, 9, 9]))
Wynikiem funkcji b([6, 3, 15, 9, 2]) jest [3, 6, 9, 2, 15].
testResult = b([6, 3, 15, 9, 2])==[3, 6, 9, 2, 15]
[3, 6, 9, 2, 15]
b([6, 3, 15, 9, 2])
Wynikiem funkcji b([36, 3, 15, 9, 2]) jest [3, 15, 9, 2, 36].
testResult = b([36, 3, 15, 9, 2])==[3, 15, 9, 2, 36]
[3, 15, 9, 2, 36]
b([36, 3, 15, 9, 2])
Wynikiem funkcji b([6, 3, 15, 9, 2, 22]) jest [3, 6, 9, 2, 15, 22].
testResult = b([6, 3, 15, 9, 2, 22])==[3, 6, 9, 2, 15, 22]
[3, 6, 9, 2, 15, 22]
b([6, 3, 15, 9, 2, 22])
Wynikiem funkcji b([11, 16, 8, 33, 6, 8, 1]) jest [11, 8, 16, 6, 8, 1, 33].
testResult = b([11, 16, 8, 33, 6, 8, 1])==[11, 8, 16, 6, 8, 1, 33]
[11, 8, 16, 6, 8, 1, 33]
b([11, 16, 8, 33, 6, 8, 1])
Rozwiąż ćwiczenie

Ćwiczenie 4Sortowanie bąbelkowe

Zdefiniuj funkcję sort_b(t), której wynikiem jest podana jako parametr lista t, posortowana metodą bąbelkową w porządku rosnącym. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji sort_b([6, 3, 15, 9, 2]) jest [2, 3, 6, 9, 15].
  • Wynikiem funkcji sort_b([11, 16, 8, 33, 6, 8, 1]) jest [1, 6, 8, 8, 11, 16, 33].
# zdefiniuj funkcję def b(t): pass # zdefiniuj funkcję def sort_b(t): pass # testy print(sort_b([16, 5, 12, 3, 12])) print(sort_b([1, 16, 18, 3, 16, 9, 9]))
Wynikiem funkcji sort_b([0, 0, 1, 1, 2]) jest [0, 0, 1, 1, 2].
testResult = sort_b([0, 0, 1, 1, 2])==[0, 0, 1, 1, 2]
[0, 0, 1, 1, 2]
sort_b([0, 0, 1, 1, 2])
Wynikiem funkcji sort_b([4, 3, 2, 1, 0]) jest [0, 1, 2, 3, 4].
testResult = sort_b([4, 3, 2, 1, 0])==[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
sort_b([4, 3, 2, 1, 0])
Wynikiem funkcji sort_b([3, 51, 2, 17]) jest [2, 3, 17, 51].
testResult = sort_b([3, 51, 2, 17])==[2, 3, 17, 51]
[2, 3, 17, 51]
sort_b([3, 51, 2, 17])
Rozwiąż ćwiczenie

Ćwiczenie 5Wstawianie elementów

Zdefiniuj funkcję w(t, x), której parametrami są posortowana lista liczb t oraz liczba x, a wynikiem jest lista t
z liczbą x wstawioną w odpowiednim miejscu. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji w([6, 13, 15, 19, 22], 18) jest [6, 13, 15, 18, 19, 22].
  • Wynikiem funkcji w([1, 9, 12, 33, 46], 57) jest [1, 9, 12, 33, 46, 57].
  • Wynikiem funkcji w([-4, -2, 0, 2, 4], 0) jest [-4, -2, 0, 0, 2, 4].
# zdefiniuj funkcję def w(t, x): pass # testy print(w([6, 13, 15, 19, 22], 18)) print(w([1, 9, 12, 33, 46], 57)) print(w([-4, -2, 0, 2, 4], 0))
Wynikiem funkcji w([0, 1, 2, 3, 4], 5) jest [0, 1, 2, 3, 4, 5].
testResult = w([0, 1, 2, 3, 4], 5)==[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5]
w([0, 1, 2, 3, 4], 5)
Wynikiem funkcji w([2, 4, 6, 8, 10], 7) jest [2, 4, 6, 7, 8, 10].
testResult = w([2, 4, 6, 8, 10], 7)==[2, 4, 6, 7, 8, 10]
[2, 4, 6, 7, 8, 10]
w([2, 4, 6, 8, 10], 7)
Wynikiem funkcji w([11, 13, 26, 78], 5) jest [5, 11, 13, 26, 78].
testResult = w([11, 13, 26, 78], 5)==[5, 11, 13, 26, 78]
[5, 11, 13, 26, 78]
w([11, 13, 26, 78], 5)
Rozwiąż ćwiczenie

Ćwiczenie 6Sortowanie przez wstawianie

Uzupełnij definicję funkcji sort_w(t), której wynikiem jest podana jako parametr lista t, posortowana metodą przez wstawianie w porządku rosnącym. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji sort_w([6, 3, 15, 9, 2]) jest [2, 3, 6, 9, 15].
  • Wynikiem funkcji sort_w([11, 16, 8, 33, 6, 8, 1]) jest [1, 6, 8, 8, 11, 16, 33].
# zdefiniuj funkcję def w(t, x): pass def sort_w(t): pom = [t[0]] for i in range(1, len(t)): w(pom, "uzupełnij funkcję") return pom # testy print(sort_w([6, 3, 15, 9, 2])) print(sort_w([11, 16, 8, 33, 6, 8, 1]))
Wynikiem funkcji sort_w([0, 0, 1, 1, 2, 2]) jest [0, 0, 1, 1, 2, 2].
testResult = sort_w([0, 0, 1, 1, 2, 2])==[0, 0, 1, 1, 2, 2]
[0, 0, 1, 1, 2, 2]
sort_w([0, 0, 1, 1, 2, 2])
Wynikiem funkcji sort_w([4, 3, 2, 1, 0]) jest [0, 1, 2, 3, 4].
testResult = sort_w([4, 3, 2, 1, 0])==[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
sort_w([4, 3, 2, 1, 0])
Wynikiem funkcji sort_w([3, 51, 2, 17, 0]) jest [0, 2, 3, 17, 51].
testResult = sort_w([3, 51, 2, 17, 0])==[0, 2, 3, 17, 51]
[0, 2, 3, 17, 51]
sort_w([3, 51, 2, 17, 0])
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 1

Zdefiniuj funkcję minimum(liczba), której wynikiem będzie najmniejsza cyfra liczby podanej jako parametr. Parametrem jest co najmniej dwucyfrowa liczba całkowita dodatnia. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem minimum(19) jest 1.
  • Wynikiem minimum(98989) jest 8.
# zdefiniuj funkcję def minimum(liczba): pass # testy print(minimum(19)) print(minimum(98989))
Wynikiem funkcji minimum(7777777777) jest 7.
testResult = minimum(7777777777)==7
7
minimum(7777777777)
Wynikiem funkcji minimum(9876543210) jest 0.
testResult = minimum(9876543210)==0
0
minimum(9876543210)
Wynikiem funkcji minimum(12345678987654321) jest 1.
testResult = minimum(12345678987654321)==1
1
minimum(12345678987654321)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 2

Zdefiniuj funkcję ile_liczb(tab), której wynikiem jest liczba różnych liczb na liście podanej jako parametr. Parametrem jest niepusta lista co najwyżej 100 liczb z zakresu od 0 do 10. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji ile_liczb([4, 1, 1, 4]) jest 2.
  • Wynikiem funkcji ile_liczb([6, 6, 3, 7, 1, 7, 4, 4, 0, 3]) jest 6.
# zdefiniuj funkcję def ile_liczb(tab): pass # testy print(ile_liczb([4, 1, 1, 4])) print(ile_liczb([6, 6, 3, 7, 1, 7, 4, 4, 0, 3]))
Wynikiem funkcji ile_liczb([7, 1, 4, 10, 8, 2, 4, 4, 8]) jest 6.
testResult = ile_liczb([7, 1, 4, 10, 8, 2, 4, 4, 8])==6
6
ile_liczb([7, 1, 4, 10, 8, 2, 4, 4, 8])
Wynikiem funkcji ile_liczb([6, 6, 6, 6, 6, 6, 6, 6, 6]) jest 1.
testResult = ile_liczb([6, 6, 6, 6, 6, 6, 6, 6, 6])==1
1
ile_liczb([6, 6, 6, 6, 6, 6, 6, 6, 6])
Wynikiem funkcji ile_liczb([1, 2, 4, 5, 7, 3, 6, 9, 8]) jest 9.
testResult = ile_liczb([1, 2, 4, 5, 7, 3, 6, 9, 8])==9
9
ile_liczb([1, 2, 4, 5, 7, 3, 6, 9, 8])
Rozwiąż ćwiczenie

Pytania quizoweSortowanie bąbelkowe i przez wstawianie

Twój wynik to: /3
  • W programie zadeklarowano listę tab = [-3, 4, -12, 0, 3]. Jaką wartość ma element o indeksie 3 ?
  • W programie zadeklarowano listę tab = [-3, 4, -12, 0, 3]. Jaką wartość będzie miała zmienna tab po operacji tab = tab + [2] ?
  • W programie wykonano poniższe operacje.

    x = 5
    y = 3
    x = y
    y = x

    Ile wynoszą wartości zmiennych x i y ?