|
|
- """ coding=utf-8
-
- Analytical Skills - practicum 4: algoritmiek
-
- (c) 2019 Hogeschool Utrecht
- Tijmen Muller (tijmen.muller@hu.nl)
-
-
- Naam:
- Klas:
- Studentnummer:
- """
-
-
- """
- 1. Sorteeralgoritme
-
- Hieronder staat de pseudocode van een sorteeralgoritme:
- 1. Startend vanaf het begin van een lijst, vergelijk elk element met zijn volgende buur.
- 2. Als het element groter is dan zijn volgende buur, verwissel ze van plaats.
- 3. Doorloop zo de lijst tot het eind.
- 4. Als er verwisselingen zijn geweest bij stap 2., ga naar stap 1.
-
- 1a. Handmatig toepassen
- Gegeven is de lijst l = [ 4, 3, 1, 2 ]. Geef de waardes die de lijst aanneemt bij álle tussenstappen bij
- toepassing van bovenstaand sorteeralgoritme.
-
- [antwoord]
-
- 1b. Implementatie
- Implementeer het sorteeralgoritme in Python in een functie genaamd my_sort(lst). Lever je code pas in als alle
- tests geen foutmeldingen meer geven.
-
- 1c. Best en worst case
- - Stel je hebt een lijst met de waarden 1, 2 en 3. Bij welke volgorde van de waarden in de lijst is het
- sorteeralgoritme het snelste klaar (best-case scenario)? Hoeveel vergelijkingen (zoals beschreven in stap 1.
- van de pseudocode) zijn nodig geweest?
-
- [antwoord]
-
- - Bij welke volgorde van de waarden in de lijst is het sorteeralgoritme het minst snel klaar
- (worst-case scenario)? Hoeveel vergelijkingen zijn nodig geweest?
-
- [anwoord]
-
- - Stel je hebt een lijst met de waarden 1 tot en met 4. Wat is nu het best-case scenario? Hoeveel vergelijkingen
- zijn er nodig?
- En wat is nu het worst-case scenario? Hoeveel vergelijkingen zijn er nodig?
-
- [antwoord]
-
- - Stel je hebt een lijst met de waarden 1 tot en met n (je weet nu dus niet precies hoeveel waarden er in de lijst
- zitten, het zijn er 'n'). Wat is nu het best-case scenario? Hoeveel vergelijkingen zijn er nodig?
- En wat is nu het worst-case scenario? Hoeveel vergelijkingen zijn er nodig?
-
- [antwoord]
-
- 2. Recursie
-
- 2a. Lineair zoeken
- Implementeer het lineair zoekalgoritme in Python op een *recursieve* manier. Maak hiervoor de functie genaamd
- linear_search_recursive(lst, target). Lever je code pas in als alle tests geen foutmeldingen meer geven.
-
- 2b. Binair zoeken
- Implementeer het binair zoekalgoritme in Python op een *recursieve* manier. Maak hiervoor de functie genaamd
- binary_search_recursive(lst, target). Lever je code pas in als alle tests geen foutmeldingen meer geven.
- """
-
-
- def my_sort(lst):
- """ Implementatie van het sorteeralgoritme die gegeven lijst lst sorteert """
- pass
-
-
- def linear_search_recursive(lst, target):
- """ Bepaalt of *target* voorkomt in lijst *lst* door middel van recursief lineair zoeken. """
- return False
-
-
- def binary_search_recursive(lst, target):
- """ Bepaalt of *target* voorkomt in lijst *lst* door middel van recursief binair zoeken. """
- return False
-
-
- """
- ========================================================================================================================
- Onderstaand staan de tests voor je code -- hieronder mag je niets wijzigen!
- Je kunt je code testen door deze file te runnen of met behulp van pytest.
- """
- import random
-
-
- def test_my_sort():
- lst_test = random.sample(range(-99, 100), 6)
- lst_copy = lst_test.copy()
- my_sort(lst_test)
- assert lst_test == sorted(lst_copy), "Fout: my_sort({}) geeft {} in plaats van {}".format(lst_copy, lst_test, sorted(lst_copy))
-
-
- def test_linear_search_recursive():
- for i in range(10):
- lst_test = random.sample(range(20), 10)
- target = random.randrange(20)
- assert linear_search_recursive(lst_test, target) == (target in lst_test), "Fout: linear_search_recursive({}, {}) geeft {} in plaats van {}".format(lst_test, target, linear_search_recursive(lst_test, target), target in lst_test)
-
-
- def test_binary_search_recursive():
- for i in range(10):
- lst_test = sorted(random.sample(range(20), 10))
- target = random.randrange(20)
- assert binary_search_recursive(lst_test, target) == (target in lst_test), "Fout: binary_search_recursive({}, {}) geeft {} in plaats van {}".format(lst_test, target, binary_search_recursive(lst_test, target), target in lst_test)
-
-
- if __name__ == '__main__':
- try:
- print("\x1b[0;32m")
-
- test_my_sort()
- print("Je functie my_sort() werkt goed!")
-
- test_linear_search_recursive()
- print("Je functie linear_search_recursive() werkt goed!")
-
- test_binary_search_recursive()
- print("Je functie binary_search_recursive() werkt goed!")
-
- print("Gefeliciteerd, alles lijkt te werken! Lever je werk nu in op Canvas...")
-
- except AssertionError as ae:
- print("\x1b[0;31m" + str(ae))
-
-
|