Terminalprogram med sortering av lista
Vi ska jobba med sorteringsalgoritmer. Ni uppdatera koden för Insertion sort så den funkar med er UnsortedList och sen kan ni skriva er egna Bubble sort.
#Förkunskaper
Du har gjort uppgiften “Skapa lista”.
Du har läst artikeln “Klassiska sorteringsalgoritmer”.
Du har läst artikeln “Datastrukturer”.
#Krav
Kopiera UnorderedList filerna från kmom04.
# Ställ dig i kurskatalogen
cd me
cp -ir kmom04/list/* kmom05/sort/
cd kmom05/sort
Skapa filen
src/sort.py
och kopiera in insertion sort från artikeln.
“src/sort.py” behöver inte innehålla någon klass. Det räcker med enbart funktion för algoritmen.Justera din Insertion sort så den kan sortera din UnorderedList. PS! När ni skapar sorterings algoritmerna ska ni använda er av listans metoder för att flytta på element. Ni ska inte hämta head och traversera noder med den i era algoritmer.
Lägg till menyvalet
10
imain.py
som sorterar listan med din Insertion sort.I
src/sort.py
skapa en rekursiv insertion sort algoritm som kan sortera din lista. Döp den tillrecursive_insertion
.Lägg till menyvalet
11
imain.py
som sorterar listan med din rekursiva insertion sort.Skapa en fil med namnet
test.py
som kör testerna ni lägger itests/test_sort.py
. Lägg till minst två “värdefulla” tester för din rekursiva insertion sort itests/test_sort.py
.
# Ställ dig i kurskatalogen
dbwebb validate sort
dbwebb publish sort
Rätta eventuella fel som dyker upp och validera igen. När det ser grönt ut så är du klar.
#Extrauppgift
Gör en implementation av Bubbel sort med rekursion, skapa funktionen
recursive_bubble
isrc/sort.py
. Lägg till menyval12
i main.py för att sortera med den.I funktionen
insertion_sort
stöd att särskilja på heltal och strängar. Om en lista innehåller strängar och heltal ska heltalen sorteras till vänster och strängarna till höger, för sig.
Exempel[3, "b", 1, "a", 2]
–>[1, 2, 3, "a", "b"]
.
#Tips från coachen
Ni kan hårdkoda värden till er lista så ni slipper skriva in nya tal i terminalen hela tiden när ni ska utveckla sorteringsalgoritmen.
Validera ofta. Så slipper du en massa valideringsfel i slutet av övningen.
Lycka till och hojta till i forumet om du behöver hjälp!
#Revision history
- 2022-02-07: (C, grm) Ny filstruktur.
- 2020-02-05: (B, aar) Bytte bubble sort för rekursiv insertion sort.
- 2018-01-31: (A, aar) Första versionen.
- 2016-04-12: (PA, lew) Pre-release.