You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
2.6 KiB

  1. """
  2. Analytical Skills - opgave insertion sort
  3. (c) 2019 Hogeschool Utrecht
  4. Tijmen Muller (tijmen.muller@hu.nl)
  5. """
  6. import random
  7. def insert(lst, grens, waarde):
  8. """ Voegt de waarde op de juiste plek in het gesorteerde deel van lijst lst """
  9. # De lijst *lst* is gesorteerd van lst[0] t/m lst[grens]
  10. # Het element *waarde* wordt ingevoegd op de juiste plek in bovengenoemde gesorteerde deel,
  11. # dus hierna is de lijst *lst* gesorteerd van lst[0] t/m lst[grens+1]
  12. # Aanpak: begin bij index *grens* en verplaats elementen groter dan *waarde* naar rechts.
  13. # Als je een waarde tegenkomt die kleiner is dan *waarde* (of het begin van lijst *lst*),
  14. # dan voeg je *waarde* in op de vrijgekomen plek.
  15. pass
  16. def insertion_sort(lst):
  17. """ Implementatie van het insertion sort algoritme die gegeven lijst lst sorteert """
  18. pass
  19. """
  20. ========================================================================================================================
  21. Onderstaand staan de tests voor je code -- hieronder mag je niets wijzigen!
  22. Je kunt je code testen door deze file te runnen of met behulp van pytest.
  23. """
  24. def test_insert():
  25. lst_test = [3, 5, 7, 11, 13, 2, 9, 14]
  26. insert(lst_test, 4, 2)
  27. lst_correct = [2, 3, 5, 7, 11, 13, 9, 14]
  28. assert lst_test == lst_correct, "\x1b[0;31mFout: insert(lst_test, 4, 2) geeft {} in plaats van {}".format(lst_test, lst_correct)
  29. insert(lst_test, 5, 9)
  30. lst_correct = [2, 3, 5, 7, 9, 11, 13, 14]
  31. assert lst_test == lst_correct, "\x1b[0;31mFout: insert(lst_test, 5, 9) geeft {} in plaats van {}".format(lst_test, lst_correct)
  32. insert(lst_test, 6, 14)
  33. lst_correct = [2, 3, 5, 7, 9, 11, 13, 14]
  34. assert lst_test == lst_correct, "\x1b[0;31mFout: insert(lst_test, 6, 14) geeft {} in plaats van {}".format(lst_test, lst_correct)
  35. def test_insertion_sort():
  36. lst_test = random.sample(range(-99, 100), 6)
  37. lst_copy = lst_test.copy()
  38. insertion_sort(lst_test)
  39. assert lst_test == sorted(lst_copy), "\x1b[0;31mFout: insertion_sort({}) geeft {} in plaats van {}".format(lst_copy, lst_test, sorted(lst_copy))
  40. if __name__ == '__main__':
  41. try:
  42. test_insert()
  43. print("\x1b[0;32mJe functie insert() werkt goed!")
  44. test_insertion_sort()
  45. print("\x1b[0;32mJe insertion sort algoritme werkt goed!\n\nKnap gedaan!\n")
  46. except AssertionError as ae:
  47. print(ae)
  48. aantal = int(input("\x1b[0;30mHoeveel getallen zal ik sorteren? "))
  49. lst = list(range(aantal))
  50. random.shuffle(lst)
  51. print("De lijst: \n" + str(lst))
  52. insertion_sort(lst)
  53. print("is na sortering: \n" + str(lst))