1 / 13

Søgning & sortering

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.

lixue
Download Presentation

Søgning & sortering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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.

  8. 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.

  9. 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

  10. Merge sort, 2

  11. Oversigt over effektivitet for søge- & sorteringsalgoritmer

  12. Ø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

  13. 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

More Related