FilmProgramowanie 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 podanych jako parametr. Następnie bada się, czy druga z liczb nie jest większa od niej, jeśli tak, to za największą przyjmuje się drugą liczbę. Następnie bada się, czy trzecia z liczb nie jest większa od niej, jeśli tak, to za największą przyjmuje się trzecią liczbę.

def trzy(a, b, c): # zdefiniuj funkcję i sprawdź jej działanie pass
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 1Losowa 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).

def losuj(rozmiar, od, do): # zdefiniuj funkcję i sprawdź jej działanie pass
Rozwiąż ćwiczenie

Ćwiczenie 2Bą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 podane niżej wyniki (czy widzisz pewną prawidłowość w wynikowej liście?) i zdefiniowaną poniżej funkcję b(t), której parametrem będzie lista liczb, a wynikiem – zmodyfikowana lista. Następnie znajdź i popraw błąd w skrypcie oraz sprawdź działanie programu dla podanych parametrów.

  • 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
Wynikiem funkcji b([1, 2, 3, 4, 5]) jest [1, 2, 3, 4, 5].
testResult = b([1, 2, 3, 4, 5])==[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
b([1, 2, 3, 4, 5])
Wynikiem funkcji b([31, 71, 5, 0, 12]) jest [31, 5, 0, 12, 71].
testResult = b([31, 71, 5, 0, 12])==[31, 5, 0, 12, 71]
[31, 5, 0, 12, 71]
b([31, 71, 5, 0, 12])
Wynikiem funkcji b([5, 5, 2, 2, 0]) jest [5, 2, 2, 0, 5].
testResult = b([5, 5, 2, 2, 0])==[5, 2, 2, 0, 5]
[5, 2, 2, 0, 5]
b([5, 5, 2, 2, 0])
Rozwiąż ćwiczenie

Ćwiczenie 3Sortowanie bąbelkowe

Zdefiniuj funkcję sort_b(t), której wynikiem będzie 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].
def sort_b(t): # zdefiniuj funkcję i sprawdź jej działanie pass
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 będą posortowana lista liczb oraz liczba x, a wynikiem – 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].
def w(t, x): # zdefiniuj funkcję i sprawdź jej działanie pass
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 będzie 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].
def sort_w(t): pom = [] pom = pom + [t[0]] for i in range(1, len(t)): wstawianie(pom, #uzupełnij funkcję) return pom
Wynikiem funkcji sort_w([0, 0, 1, 1, 2, 2]) jest [0, 1, 2].
testResult = sort_w([0, 0, 1, 1, 2, 2])==[0, 1, 2]
[0, 1, 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

Zadanie 1Sortowanie bąbelkowe – wersja uproszczona

Zdefiniuj funkcję sort_b2(t), której wynikiem będzie podana jako parametr lista t, posortowana uproszczoną metodą sortowania bąbelkowego.

def sort_b2(t): # zdefiniuj funkcję i sprawdź jej działanie pass
Wynikiem funkcji sort_b2([0, 0, 1, 1, 2]) jest [0, 0, 1, 1, 2].
testResult = sort_b2([0, 0, 1, 1, 2])==[0, 0, 1, 1, 2]
[0, 0, 1, 1, 2]
sort_b2([0, 0, 1, 1, 2])
Wynikiem funkcji sort_b2([3, 51, 2, 17]) jest [2, 3, 17, 51].
testResult = sort_b2([3, 51, 2, 17])==[2, 3, 17, 51]
[2, 3, 17, 51]
sort_b2([3, 51, 2, 17])
Wynikiem funkcji sort_b2([3, 51, 2, 17, 0]) jest [0, 2, 3, 17, 51].
testResult = sort_b2([3, 51, 2, 17, 0])==[0, 2, 3, 17, 51]
[0, 2, 3, 17, 51]
sort_b2([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.
def minimum(liczba): # zdefiniuj funkcję i sprawdź jej działanie pass
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.
def ile_liczb(tab): # zdefiniuj funkcję i sprawdź jej działanie pass
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