View
45
Download
0
Category
Tags:
Preview:
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
Søgning & sortering
1
• 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.: search key) findes i et array
To populære algoritmer: lineær søgning & binær søgning
2
Lineær søgning (figur 18.2 s. 755)
3
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’et sekventielt
Effektivitet for lineær søgning
4
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-case runtime for en algoritme
Der skelnes mellem tre Big O typer: Constant runtime – 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) Quadratic runtime – 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)
5
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
6
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)
7
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)
8
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)
9
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
Merge sort, 2
10
Oversigt over effektivitet for søge- & sorteringsalgoritmer
11
Ø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
12
Programmeringsøvelser – exception handling
Resten af dagen + fortsæt hjemme: 1. 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
2. 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
3. Prøv evt. at implementere Spejdersystemet, så der benyttes arrays i stedet for tekstfiler. Lav også gerne en søgefunktion
13
Recommended