130 likes | 261 Views
Søgning & sortering. Intro søgning Lineær søgning Binær søgning Intro sorteringsalgoritmer Selection sort Insertion sort Merge sort Oversigt over effektivitet for søge- & sorteringsalgoritmer Steen Jensen , efterår 2013. Intro søgning.
E N D
Søgning & sortering • Intro søgning • Lineær søgning • Binær søgning • Intro sorteringsalgoritmer • Selection sort • Insertion sort • Merge sort • Oversigt over effektivitet for søge- & sorteringsalgoritmer • Steen Jensen, efterår 2013
Intro søgning Søgning indebærer at afgøre, om en given værdi (søgenøgle, eng.: searchkey) findes i et array To populære algoritmer: lineær søgning & binær søgning
Lineær søgning (figur 18.2 s. 755) • Eksemplet viser en lineær søgning udført på et array med 10 elementer • Algoritmen for en lineær søgning søger hvert element i array’etsekventielt
Effektivitet for lineær søgning • Forskellige søgealgoritmer har alle det samme mål: at finde et element, der matcher en given søgenøgle • Den store forskel er den indsats, der er nødvendig – en måleenhed for dette er Big O, som er et udtryk for worst-caseruntimefor en algoritme • Der skelnes mellem tre Big O typer: • Constantruntime– betyder, at antallet af sammenligninger er konstant og ikke stiger med antallet af elementer i array’et: O(1) • Linear runtime– betegner en algoritme, der bruger n – 1 sammenligninger: O(n) • Quadraticruntime– er en algoritme, hvor er fordobling af antal elementer i array’et bevirker en firdobling af antal søgninger: O(n 2) • Den lineære søgning tilhører linear runtime
Binær søgning (figur 18.4 s. 760) • Eksemplet viser en binær søgning udført på et array med 15 elementer • Algoritmen for en binær søgning deler løbende array’et i 2 dele og tester den midterste værdi i den tilbageværende del af array’et mod søgenøglen • Algoritmen kræver, at array’et er sorteret på forhånd
Sorteringsalgoritmer • Sortering handler om at placere data i en bestemt rækkefølge – stigende (eng.: ascending) eller faldende (eng.: descending) • Uanset algoritme vil slutresultatet blive det samme – kun runtime & brug af hukommelse vil variere • Tre algoritmer: • Selection sort og insertion sort: nemme at programmere, men ineffektive • Merge sort : meget hurtigere end de to ovennævnte, men sværere at programmere
Selection sort (figur 18.6 s. 765) • Eksemplet viser en selection sort udført på et array med 10 elementer • Algoritmen for en selection sort vælger det mindste element og swapper dette med det første element • Derefter fortsættes med det andet mindste element, der swappes med det andet element o.s.v.
Insertion sort (figur 18.8 s. 769) • Eksemplet viser en insertion sort udført på et array med 10 elementer • Algoritmen for en insertion sort vælger det andet element og swapper dette med det første element, hvis det er mindre end dette • Derefter fortsættes med det tredje element, som indsættes i den korrekte position i forhold til de to første elementer o.s.v.
Merge sort (figur 18.10 s. 773) • Eksemplet viser en merge sort udført på et array med 10 elementer • Algoritmen for en merge sort sorterer et array ved at splitte array’et op i to sub-arrays • Hvert sub-array sorteres, og de to sub-arrays sammensættes (eng.: merge) til et større array • Implementeringen er rekursiv
Øvelser søgning & sortering – i klassen Prøv at besvare øvelse 18.1 - 18.4 s. 781 uden at se svaret Check derefter dine svar op imod svarene s. 781
Programmeringsøvelser – exception handling • Resten af dagen + fortsæt hjemme: • Lav en app, hvor brugeren kan indtaste en række tal eller ord (eget valg). Tallene / ordene skal løbende gemmes i et array.Når brugeren har indtastet den sidste værdi, skal array’et sorteres og udskrives • Udvid app’en fra 1), så brugeren efter at have indtastet den sidste værdi kan indtaste en søgenøgle, som så skal søges frem og vises • Prøv evt. at implementere Spejdersystemet, så der benyttes arrays i stedet for tekstfiler. Lav også gerne en søgefunktion