søgning & sortering

13
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

Upload: lixue

Post on 23-Feb-2016

43 views

Category:

Documents


0 download

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

TRANSCRIPT

Page 1: Søgning &  sortering

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

Page 2: Søgning &  sortering

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

Page 3: Søgning &  sortering

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

Page 4: Søgning &  sortering

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

Page 5: Søgning &  sortering

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

Page 6: Søgning &  sortering

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

Page 7: Søgning &  sortering

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.

Page 8: Søgning &  sortering

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.

Page 9: Søgning &  sortering

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

Page 10: Søgning &  sortering

Merge sort, 2

10

Page 11: Søgning &  sortering

Oversigt over effektivitet for søge- & sorteringsalgoritmer

11

Page 12: Søgning &  sortering

Ø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

Page 13: Søgning &  sortering

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