Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

Relevanta dokument
Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4

Föreläsning 11 Datastrukturer (DAT037)

Självbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2

Magnus Nielsen, IDA, Linköpings universitet

Tommy Färnqvist, IDA, Linköpings universitet

GOTO och lägen. Några saker till och lite om snabbare sortering. GOTO och lägen (3) GOTO och lägen (2)

Några saker till och lite om snabbare sortering

Föreläsning 11 Innehåll

SORTERING OCH SÖKNING

FÖRBERED UNDERLAG FÖR BEDÖMNING SÅ HÄR

Föreläsning 12 Innehåll

Tentamen i DD2387 Programsystemkonstruktion med C++

Graphs (chapter 14) 1

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Några saker till och lite om snabbare sortering

Sökning och sortering. Linda Mannila

Föreläsning 12 Innehåll

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

Sökning och sortering. Sökning och sortering - definitioner. Sökning i oordnad lista. Sökning med vaktpost i oordnad lista

Sökning och sortering

Calculate check digits according to the modulus-11 method

ID1020: Quicksort. Dr. Jim Dowling kap 2.3. Slides adapted from Algoritms 4 th Edition, Sedgewick.

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

Sortering. Brute-force. Sortering Ordna element enligt relation mellan nyckelvärden

Svenska()(Bruksanvisning(för(handdukstork()(1400(x(250(mm(

Träd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4

Algoritmer. Två gränssnitt

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd

Föreläsning 5. Rekursion

Support Manual HoistLocatel Electronic Locks

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 10 Erik Nilsson, Institutionen för Datavetenskap, LiU

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Sortering. Föreläsning 12 Innehåll. Sortering i Java. Sortering i Java Exempel. Sortering

Do you Think there is a problem with the car traffic to or from the inner city weekdays ?


x 2 2(x + 2), f(x) = by utilizing the guidance given by asymptotes and stationary points. γ : 8xy x 2 y 3 = 12 x + 3

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Kvalitetsarbete I Landstinget i Kalmar län. 24 oktober 2007 Eva Arvidsson

Grundläggande datalogi - Övning 3

TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:00-19:00

Dugga Datastrukturer (DAT036)

Ringmaster RM3 - RM 5 RM3 RM 4 RM 5

Webbreg öppen: 26/ /

Styrteknik: Binära tal, talsystem och koder D3:1

ASSEMBLY INSTRUCTIONS SCALE SQUARE - STANDARD

3. Toppkvinnor på hög Låt lådan och de två kvinnornas famnar utgöra stackarna L, K1 respektive K2. Från början finns alla kort i L.

ASSEMBLY INSTRUCTIONS SCALE CIRCLE - STANDARD

Programmering för språkteknologer II. OH-serie: Sökning och sortering. Algoritm

Några svar till TDDC70/91 Datastrukturer och algoritmer

Webbregistrering pa kurs och termin

Algoritmer, datastrukturer och komplexitet

Preschool Kindergarten

12.6 Heat equation, Wave equation

Tentamen: Programutveckling ht 2015

Par m 328 feet. Lång höger sväng. Korgen står placerad i en skogsglänta OB-linje på vänster sida.

ASSEMBLY INSTRUCTIONS

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

2(x + 1) x f(x) = 3. Find the area of the surface generated by rotating the curve. y = x 3, 0 x 1,

Windlass Control Panel v1.0.1


Algoritmer, datastrukturer och komplexitet

Föreläsning 5. Rekursion

Medan ni väntar. 2. Skriv metoden. 3. Skriv metoden. Naturligtvis rekursivt och utan användning av Javas standardmetoder.

Föreläsning 9. Sortering

Föreläsning 11 Innehåll. Sortering. Sortering i Java. Sortering i Java Comparable. Sortering. O(n 2 )-algoritmer: urvalssortering insättningssortering

This is England. 1. Describe your first impression of Shaun! What kind of person is he? Why is he lonely and bullied?

Fortsatt Luftvärdighet

Föreläsning 8 Datastrukturer (DAT037)

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

Sökning och sortering

Rastercell. Digital Rastrering. AM & FM Raster. Rastercell. AM & FM Raster. Sasan Gooran (VT 2007) Rastrering. Rastercell. Konventionellt, AM

Workplan Food. Spring term 2016 Year 7. Name:

Libers språklåda i engelska Grab n go lessons

Rekursiva algoritmer sortering sökning mönstermatchning

Isometries of the plane

ASSEMBLY INSTRUCTIONS SCALE - SYSTEM

Information technology Open Document Format for Office Applications (OpenDocument) v1.0 (ISO/IEC 26300:2006, IDT) SWEDISH STANDARDS INSTITUTE

Discovering!!!!! Swedish ÅÄÖ. EPISODE 6 Norrlänningar and numbers Misi.se

Föreläsning 8 Datastrukturer (DAT037)

Linjär sökning. Föreläsning 12. Binär sökning. Exempel: Binära sökträd. Binärt sökträd

KTH, NADA, Vahid Mosavat. 1. Flervalsfrågor (5p)

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4

Lösningar Datastrukturer TDA

Grafisk teknik IMCDP IMCDP IMCDP. IMCDP(filter) Sasan Gooran (HT 2006) Assumptions:

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Att styla webbsidor. Nivå. Uppgiften

Dekomposition och dynamisk programmering

Urban Runoff in Denser Environments. Tom Richman, ASLA, AICP

Kurskod: TAMS11 Provkod: TENB 28 August 2014, 08:00-12:00. English Version

samhälle Susanna Öhman

Exempelsamling Assemblerprogrammering

- den bredaste guiden om Mallorca på svenska! -

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

Föreläsning 11: Rekursion

F ξ (x) = f(y, x)dydx = 1. We say that a random variable ξ has a distribution F (x), if. F (x) =

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

Sortering. Intern/ extern? Antaganden. Vad kan vi kräva? Rank sort. Rank sort. På en nod/ distribuerad? Jämförelsebaserad/ icke jämförelsebaserad?

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Agreement EXTRA. Real wage increases, expanded part-time pensions and a low-wage effort in the unions joint agreement demands.

Transkript:

Quicksort Koffman & Wolfgang kapitel 8, avsnitt 9 1

Quicksort Quicksort väljer ett spcifikt värde (kallat pivot), och delar upp resten av fältet i två delar: alla element som är pivot läggs i vänstra delen alla element som är > pivot läggs i högra delen pivoten placeras mittemellan sortera vänstra och högra delen var för sig, rekursivt 2

Trace of Quicksort 44 75 23 43 55 12 64 77 33

Trace of Quicksort (cont.) 44 75 23 43 55 12 64 77 33 Arbitrarily select the first element as the pivot

Trace of Quicksort (cont.) 55 75 23 43 44 12 64 77 33 Swap the pivot with the element in the middle

Trace of Quicksort (cont.) 55 75 23 43 44 12 64 77 33 Partition the elements so that all values less than or equal to the pivot are to the left, and all values greater than the pivot are to the right

Trace of Quicksort (cont.) 12 33 23 43 44 55 64 77 75 Partition the elements so that all values less than or equal to the pivot are to the left, and all values greater than the pivot are to the right

Quicksort Example(cont.) 44 is now in its correct position 12 33 23 43 44 55 64 77 75

Trace of Quicksort (cont.) 12 33 23 43 44 55 64 77 75 Now apply quicksort recursively to the two subarrays

Trace of Quicksort (cont.) Pivot value = 12 12 33 23 43 44 55 64 77 75

Trace of Quicksort (cont.) Pivot value = 12 12 33 23 43 44 55 64 77 75

Trace of Quicksort (cont.) Pivot value = 33 12 33 23 43 44 55 64 77 75

Trace of Quicksort (cont.) Pivot value = 33 12 23 33 43 44 55 64 77 75

Trace of Quicksort (cont.) Pivot value = 33 12 23 33 43 44 55 64 77 75

Trace of Quicksort (cont.) Pivot value = 33 12 23 33 43 44 55 64 77 75 Left and right subarrays have single values; they are sorted

Trace of Quicksort (cont.) Pivot value = 33 12 23 33 43 44 55 64 77 75 Left and right subarrays have single values; they are sorted

Trace of Quicksort (cont.) Pivot value = 55 12 23 33 43 44 55 64 77 75

Trace of Quicksort (cont.) Pivot value = 64 12 23 33 43 44 55 64 77 75

Trace of Quicksort (cont.) Pivot value = 77 12 23 33 43 44 55 64 77 75

Trace of Quicksort (cont.) Pivot value = 77 12 23 33 43 44 55 64 75 77

Trace of Quicksort (cont.) Pivot value = 77 12 23 33 43 44 55 64 75 77

Trace of Quicksort (cont.) 12 23 33 43 44 55 64 75 77 Left subarray has single value; it is sorted

Trace of Quicksort (cont.) 12 23 33 43 44 55 64 75 77

Analys av Quicksort Om pivoten är ett slumpmässigt värde från det aktuella fältet, så kommer statistiskt sett pivoten att ligga i mitten av fältet vänster och höger halva kommer (statistiskt sett) att bli lika stora dvs, varje rekursivt anrop kommer att sortera ett hälften så stort fält (statistiskt sett) dvs, samma resonemang som för Mergesort fast Quicksort är in-place 24

Algorithm for Partitioning 44 75 23 43 55 12 64 77 33 If the array is randomly ordered, it does not matter which element is the pivot. For simplicity we pick the element with subscript first

Trace of Partitioning (cont.) 44 75 23 43 55 12 64 77 33 If the array is randomly ordered, it does not matter which element is the pivot. For simplicity we pick the element with subscript first

Trace of Partitioning (cont.) 44 75 23 43 55 12 64 77 33 For visualization purposes, items less than or equal to the pivot will be colored blue; items greater than the pivot will be colored light purple

Trace of Partitioning (cont.) 44 75 23 43 55 12 64 77 33 For visualization purposes, items less than or equal to the pivot will be colored blue; items greater than the pivot will be colored light purple

Trace of Partitioning (cont.) 44 75 23 43 55 12 64 77 33 Search for the first value at the left end of the array that is greater than the pivot value

Trace of Partitioning (cont.) up 44 75 23 43 55 12 64 77 33 Search for the first value at the left end of the array that is greater than the pivot value

Trace of Partitioning (cont.) up 44 75 23 43 55 12 64 77 33 Then search for the first value at the right end of the array that is less than or equal to the pivot value

Trace of Partitioning (cont.) up down 44 75 23 43 55 12 64 77 33 Then search for the first value at the right end of the array that is less than or equal to the pivot value

Trace of Partitioning (cont.) up down 44 75 23 43 55 12 64 77 33 Exchange these values

Trace of Partitioning (cont.) 44 33 23 43 55 12 64 77 75 Exchange these values

Trace of Partitioning (cont.) 44 33 23 43 55 12 64 77 75 Repeat

Trace of Partitioning (cont.) up 44 33 23 43 55 12 64 77 75 Find first value at left end greater than pivot

Trace of Partitioning (cont.) up down 44 33 23 43 55 12 64 77 75 Find first value at right end less than or equal to pivot

Trace of Partitioning (cont.) 44 33 23 43 12 55 64 77 75 Exchange

Trace of Partitioning (cont.) 44 33 23 43 12 55 64 77 75 Repeat

Trace of Partitioning (cont.) up 44 33 23 43 12 55 64 77 75 Find first element at left end greater than pivot

Trace of Partitioning (cont.) down up 44 33 23 43 12 55 64 77 75 Find first element at right end less than or equal to pivot

Trace of Partitioning (cont.) down up 44 33 23 43 12 55 64 77 75 Since down has "passed" up, do not exchange

Trace of Partitioning (cont.) down up 44 33 23 43 12 55 64 77 75 Exchange the pivot value with the value at down

Trace of Partitioning (cont.) down 12 33 23 43 44 55 64 77 75 Exchange the pivot value with the value at down

Trace of Partitioning (cont.) down 12 33 23 43 44 55 64 77 75 The pivot value is in the correct position; return the value of down and assign it to the pivot index pivindex

Partitionsalgoritm

Analys av Quicksort Om pivoten väljs dumt så kan Quicksort bli ineffektiv: om det ena delfältet alltid råkar bli tomt t.ex., om man alltid tar första värdet som pivot, och listan redan är sorterad i det fallet blir komplexiteten O(n 2 ), precis som insättningssortering Bättre är att välja pivoten smartare: t.ex., utgå från tre värden första, mittersta och sista elementet välj medianen av dessa som pivot detta minskar risken för dålig delning

48 Sorteringsalgoritmer