Sorteeralgoritmen - PowerPoint PPT Presentation

About This Presentation
Title:

Sorteeralgoritmen

Description:

Title: PowerPoint-presentatie Author: Brother International Last modified by: Brother International Created Date: 12/17/2003 9:16:22 AM Document presentation format – PowerPoint PPT presentation

Number of Views:77
Avg rating:3.0/5.0
Slides: 22
Provided by: Broth3
Category:

less

Transcript and Presenter's Notes

Title: Sorteeralgoritmen


1
Sorteeralgoritmen
2
Sorteren aanpak 1
  • Hoe ga je een rij getallen sorteren met PC?
  • Sorteren door selectie ( selection sort)
  • Zoek de kleinste waarde
  • Sorteer de andere waarden
  • Voeg de kleinste waarde vooraan toe
  • Sorteren door selectie kan recursief
    geïmplementeerd worden

3
Selection sort implementatie 1
  • to ssort list
  • if emptyp list output
  • localmake smallest reduce min list
  • output fput smallest (ssort remove.once
    smallest list)
  • end

4
Selection sort implementatie 1
  • to remove.once item list
  • if equalp item first list output butfirst
    list
  • output fput first list (remove.once item
    butfirst list)
  • end

5
Sorteren door selectie
  • Probleem je gaat 2 x door de lijst per oproep
  • 1 om kleinste getal te vinden
  • 2 om dit getal te verwijderen uit de lijst. In
    de recursieve oproep maak je gebruik van de
    nieuwe lijst.

6
Selection sort implementatie 2
  • to ssort list
  • if emptyp list output
  • output ssort1 (first list) (butfirst list)
  • end

7
Selection sort implementatie 2
  • to ssort1 min in out
  • if emptyp in output fput min ssort out
  • if lessthanp min (first in)
  • output ssort1 min (butfirst in) (fput first
    in out)
  • output ssort1 (first in) (butfirst in) (fput
    min out)
  • end

8
Sorteren door selectie
  • Stel rij van 100 getallen
  • Aantal nodige vergelijkingen
  • stap 1 99
  • stap 2 98
  • ? Totaal 4950
  • Voor rij van n getallen (n 1 ) n / 2

9
Sorteren door invoegen
  • Algoritme
  • Neem bvb het eerste getal van de rij
  • Sorteer de overige waarden van de rij
  • Plaats het gekozen getal op de juiste plaats
  • Aantal vergelijkingen voor rij van lengte n
  • Hangt af van de input data
  • Minimum n 1 (gesorteerde rij)
  • Maximum n (n 1) / 2
  • (omgekeerd gesorteerde rij)

10
Sorteren aanpak 2
  • Hoe ga je 100 paginas op juiste volgorde steken?
  • Rij van lengte 100
  • Opsplitsen in 2 groepen van ca. 50 getallen
  • Sorteren via selectie
  • 2 1225 2450 gt Beter!
  • Beter Niet één keer, maar meerdere keren
    opsplitsen

11
Partition Sort algoritme
  • Bepaal een waarde die ca. mediaan is voor rij (
    de rij in ca. gelijke helften deelt)
  • Verdeel de input in een kleine waarde en een
    grote waarde helft
  • Sorteer elk van beide helften
  • Plaats de gesorteerde kleine waarde helft
    voor de gesorteerde grote waarde helft

12
Partition sort implementatie 1
  • to psort list
  • if (count list) lt 2 output list
  • localmake split guess.middle.value list
  • output sentence psort filter ? lt split list
  • psort filter not (? lt split) list
  • end
  • to guess.middle.value list
  • output ((first list) (last list)) / 2
  • end

13
Partition sort optimalisatie
  • We willen het aantal vergelijkingen minimaliseren
  • Waarde om rij in 2 groepen te delen (
    splitswaarde ) is belangrijk
  • Gemiddelde van eerste en laatste getal
    1 3 5 6 4 2 geeft probleem
  • Gemiddelde van alle getallen
    3 2 1000 5 1 4 geeft probleem
  • Niet 2 keer door de input rij gaan

14
Partition sort implementatie2
  • to psort list
  • if emptyp list output
  • if emptyp butfirst list output list
  • localmake split ((first list) (last list))/2
  • output psort1 split list
  • end

15
Partition sort implementatie 2
  • to psort1 split in low high
  • if emptyp in output sentence (psort low)
  • (psort high)
  • if lessthanp first in split
  • output psort1 split (butfirst in)
  • (fput first in low) high
  • output psort1 split (butfirst in) low (fput
  • first in high)
  • end

16
Partition Sort
  • Stel als invoer 4 5 6 4 of 4 4 4 4 gt
    Problemen als eerste getal laatste getal
  • Voorgaande algoritme niet zeker eindig gt
    keuze van splitswaarde aanpassen
  • Lijst overlopen op zoek naar eerste waarde die
    verschilt gt eventueel veel extra vergelijkingen
  • if equalp first list last list

17
Partition sort aanpassing
  • Rij splitsen in 3 emmers (laag, hoog, gelijk)
  • De emmer gelijk moet je niet meer verder
    sorteren
  • if lessthanp first in split
  • if equaltop first in split
  • gt 2 bewerkingen nodig per vergelijking

18
Partition sort implementatie 3
  • to psort list
  • if emptyp list output
  • if emptyp butfirst list output list
  • localmake split ((first list) (last list))/2
  • if lessthanp first list split
  • output psort1 split (butfirst list) (list
    first list)
  • output psort1 split (butlast list) (list last
    list)
  • end

19
Partition sort aantal vergelijkingen
  • A. In beste geval
  • 1ste stap 100 getallen verdelen over 2 emmers gt
    100 getallen vergelijken met splitswaarde
  • 2de stap ca. 2 ( voor elke emmer) (50
    getallen verdelen over 2 emmers) gt ca. 100
    getallen vergelijken met splitswaarde
  • Elke stap ca. 100 vergelijkingen
  • Totaal 100 keer

20
Partition sort aantal vergelijkingen
  • keer is in beste geval ²log n
  • Totaal n ²log n
  • B. In slechtste geval
  • Aantal nodige vergelijkingen
  • stap 1 100
  • stap 2 99
  • stap 3 98
  • ?totaal ca. 5000

21
Mergesort
  • Algoritme
  • Verdeel de invoer willekeurig in 2 helften van
    gelijke grootte
  • Sorteer elk van de beide helften afzonderlijk
  • Voeg de 2 helften samen door de waarden te
    vergelijken
  • Voordeel We weten zeker dat de beide helften
    even groot zijn
Write a Comment
User Comments (0)
About PowerShow.com