02. januar 2002 - 12:56Der er
9 kommentarer og 1 løsning
Insertionsort
Jeg sidder med en opgave, hvori jeg har fået den vejledende løsning:
public void sortKundeList(KundeList kl){ //PRE: none //POST: KundeListen kl er sorteret i voksende rækkefølge efter kundenummer (Der anvendes en simpel insertionsort)
Jeg kan godt se teorien i, at man skal undersøge hvert enkelt tal (Kundenr) og se om det er mindre end det forrige. Men hvordan helt nøjagtigt virker de to for-løkker. Hvordan gennemløber de en Kundelist med f.eks Kundenumre som 22,15,29,26,11,8. Det er de to for-løkkers indbyrdes løb gennem talrækken, som jeg er i tvivl om.
Så vidt jeg kan se sorterer den løsning ingenting. I den inderste løkke sættes j = p, hvorefter den ene betingelse kræver at kundenummeret på plads p er mindre end kundenummeret på plads j. Da p = j er de to kundenumre ens, og betingelsen kan aldrig være true.
I en insertionsort sættes hvert enkelt element ind på sin rette plads ved at flytte alle de efterfølgende for at give plads. Her flyttes elementet én ad gangen indtil det er på sin plads, og det er en bubblesort
Nej, det er rigtigt at denne implementation af inserttionsort er ineffektiv, ved at den indsætter det aktuelle element på alle de mellemliggende pladser, i stedet for at vente til sidst.
En boblesortering er karakteriseret ved at man bytter konsekutive elementer et passende antal gange, uden at kigge på deres indhold. En boblesortering vil efter første gennemløb anbringe det største tal til sidst (og have en globalt sorteret delliste til sidst), og en boblesortering kan stoppe tidligere, hvis der viser sig ikke at være flere ombytninger. Ingen af disse ting er tilfældet for denne sortering.
Da ingen af "svarerne" har svaret tager jeg selv pointene, så jeg ikke har nogen ude i mit pointregnskab.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.