Heapsort. Koffman & Wolfgang kapitel 8, avsnitt 8

Relevanta dokument
Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

Föreläsning 11 Datastrukturer (DAT037)

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

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

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

Lösningar Datastrukturer TDA

Föreläsning 4 Datastrukturer (DAT037)

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

Föreläsning 4 Datastrukturer (DAT037)

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

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

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

Ännu mera träd: 2-3-träd, B-träd, rödsvarta träd, träd Weiss, avsnitt 4.7, 11.5, 12.2, etc.

Föreläsning 9 Datastrukturer (DAT037)

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på

Seminarium 13 Innehåll

Föreläsning 11 Innehåll

Datastrukturer. föreläsning 8. Lecture 6 1

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

Exempeltenta GruDat 2002/2003

Föreläsning Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT037)

Tentamen Datastrukturer D DAT 036/INN960

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

Föreläsning 13 Innehåll

Föreläsning Datastrukturer (DAT036)

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

Teoretisk del. Facit Tentamen TDDC (6)

SORTERING OCH SÖKNING

Tentamen Datastrukturer D DAT 036/INN960

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

Föreläsning 9. Sortering

Föreläsning Datastrukturer (DAT037)

Föreläsning 13 Innehåll

Algoritmer och datastrukturer 2012, fo rela sning 8

Föreläsning 12 Innehåll

Listor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9

Föreläsning 5 TDDC91,TDDE22,725G97: DALG. Föreläsning i Datastrukturer och algoritmer 18 september 2018

Grundläggande datalogi - Övning 4

Tentamen Datastrukturer, DAT037 (DAT036)

4 grundregler. Minneshantering. Problemet. Windows minkrav

Algoritmer. Två gränssnitt

Fredag 10 juni 2016 kl 8 12

Tentamen Datastrukturer D DAT 036/DIT960

Föreläsning Datastrukturer (DAT037)

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

Träd Hierarkiska strukturer

Tentamen Datastrukturer (DAT036)

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning 7 Datastrukturer (DAT037)

Tentamen Datastrukturer för D2 DAT 035

Föreläsning Datastrukturer (DAT036)

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

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

Föreläsning Datastrukturer (DAT036)

Tentamen Datastrukturer D DAT 035/INN960

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

Tentamen Datastrukturer (DAT036)

Föreläsning 13 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

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

Lösningsförslag till tentamen Datastrukturer, DAT037,

Föreläsning 13 Datastrukturer (DAT037)

Föreläsning 12 Innehåll

Rekursion. Koffman & Wolfgang kapitel 5

Sökning och sortering

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 8 Datastrukturer (DAT037)

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

Föreläsning 8: Exempel och problemlösning

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Föreläsning 5 Datastrukturer (DAT037)

Facit Tentamen TDDC kl (6)

Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg

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

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

Tentamen Datastrukturer D DAT 035/INN960

F11. Läsanvisning: kap 10 + dessa OH. Kruskals algoritm kortaste vägar en till alla

Föreläsning 5 Innehåll

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

Övningsuppgifter #11, Programkonstruktion och datastrukturer

Tentamen i Algoritmer & Datastrukturer i Java

Magnus Nielsen, IDA, Linköpings universitet

Föreläsning 3. Stack

Föreläsning Datastrukturer (DAT036)

Introduktion till algoritmer - Lektion 3 Matematikgymnasiet, Läsåret Lektion 3

Föreläsning 8 Datastrukturer (DAT037)

BST implementering, huvudstruktur

Lösningsförslag för tentamen i Datastrukturer (DAT036) från

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

Datastrukturer. föreläsning 3. Stacks 1

Föreläsning 5. Rekursion

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

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

SI-möte #10, Programkonstruktion och Datastrukturer

Objektorientering: Lagring och livstid

Transkript:

Heapsort Koffman & Wolfgang kapitel 8, avsnitt 8 1

Heapsort Mergesort har komplexitet O(n log n) men det kräver temporärt ett extra fält Heapsort kräver inte något extraminne det är en in-place-algoritm som namnet antyder använder algoritmen en heap för att sortera fältet 2

Första versionen av Heapsort En enkel Heapsort-algoritm: skapa en tom heap tag ett element i taget ur fältet och stoppa in i heapen tag sedan ut elementen ur heapen ett i taget och stoppa tillbaka i fältet Denhär versionen kräver extraminne hur gör man detta in-place? 3

Heapsort in-place Antag att vi har ett fält med n element låt första elementet vara en heap med ett element utöka heapen med ett element i taget låt elementet bubbla upp till rätt plats i heapen Nu har vi en heap; hur gör vi den till en lista? byt ut det översta elementet med det sista minska heapens storlek, och låt det nya översta elementet bubbla ner till rätt ställe fortsätt så tills heapen bara har ett element 4 Vi måste bygga heapen som en max-heap, eftersom vi flyttar elementen sist i fältet hela tiden

Trace of Heapsort 89 Heap OK 76 74 37 32 39 66 20 26 18 28 29 6

89 Remove 76 74 37 32 39 66 20 26 18 28 29 6

6 Reheap 76 74 37 32 39 66 20 26 18 28 29 89

76 6 74 37 32 39 66 20 26 18 28 29 89

76 37 74 6 32 39 66 20 26 18 28 29 89

76 37 74 26 32 39 66 20 6 18 28 29 89

76 Heap OK 37 74 26 32 39 66 20 6 18 28 29 89

76 Remove 37 74 26 32 39 66 20 6 18 28 29 89

29 Reheap 37 74 26 32 39 66 20 6 18 28 76 89

74 37 29 26 32 39 66 20 6 18 28 76 89

74 37 66 26 32 39 29 20 6 18 28 76 89

74 Heap OK 37 66 26 32 39 29 20 6 18 28 76 89

74 Remove 37 66 26 32 39 29 20 6 18 28 76 89

28 Reheap 37 66 26 32 39 29 20 6 18 74 76 89

66 37 28 26 32 39 29 20 6 18 74 76 89

66 37 39 26 32 28 29 20 6 18 74 76 89

66 Heap OK 37 39 26 32 28 29 20 6 18 74 76 89

66 Remove 37 39 26 32 28 29 20 6 18 74 76 89

18 Reheap 37 39 26 32 28 29 20 6 66 74 76 89

39 37 18 26 32 28 29 20 6 66 74 76 89

39 37 29 26 32 28 18 20 6 66 74 76 89

39 Heap OK 37 29 26 32 28 18 20 6 66 74 76 89

39 Remove 37 29 26 32 28 18 20 6 66 74 76 89

6 Reheap 37 29 26 32 28 18 20 39 66 74 76 89

37 6 29 26 32 28 18 20 39 66 74 76 89

37 32 29 26 6 28 18 20 39 66 74 76 89

37 Heap OK 32 29 26 6 28 18 20 39 66 74 76 89

37 Remove 32 29 26 6 28 18 20 39 66 74 76 89

20 Reheap 32 29 26 6 28 18 37 39 66 74 76 89

32 20 29 26 6 28 18 37 39 66 74 76 89

32 26 29 20 6 28 18 37 39 66 74 76 89

32 Heap OK 26 29 20 6 28 18 37 39 66 74 76 89

32 Remove 26 29 20 6 28 18 37 39 66 74 76 89

18 Reheap 26 29 20 6 28 32 37 39 66 74 76 89

29 26 18 20 6 28 32 37 39 66 74 76 89

29 26 28 20 6 18 32 37 39 66 74 76 89

29 Heap OK 26 28 20 6 18 32 37 39 66 74 76 89

29 Remove 26 28 20 6 18 32 37 39 66 74 76 89

18 Reheap 26 28 20 6 29 32 37 39 66 74 76 89

28 26 18 20 6 29 32 37 39 66 74 76 89

28 Heap OK 26 18 20 6 29 32 37 39 66 74 76 89

28 Remove 26 18 20 6 29 32 37 39 66 74 76 89

6 Reheap 26 18 20 28 29 32 37 39 66 74 76 89

26 6 18 20 28 29 32 37 39 66 74 76 89

26 20 18 6 28 29 32 37 39 66 74 76 89

26 Heap OK 20 18 6 28 29 32 37 39 66 74 76 89

26 Remove 20 18 6 28 29 32 37 39 66 74 76 89

6 Reheap 20 18 26 28 29 32 37 39 66 74 76 89

20 6 18 26 28 29 32 37 39 66 74 76 89

20 Heap OK 6 18 26 28 29 32 37 39 66 74 76 89

20 Remove 6 18 26 28 29 32 37 39 66 74 76 89

18 Reheap 6 20 26 28 29 32 37 39 66 74 76 89

18 Heap OK 6 20 26 28 29 32 37 39 66 74 76 89

18 Remove 6 20 26 28 29 32 37 39 66 74 76 89

6 Reheap 18 20 26 28 29 32 37 39 66 74 76 89

6 Heap OK 18 20 26 28 29 32 37 39 66 74 76 89

Heapsort, implementering Vi implementerar heapen som ett fält: fältet är uppdelat i en heap-del och en sorterad lista varje element vi tar bort flyttas till slutet av fältet heap-delen av fältet minskar successivt

Heapsort, algoritm Algoritm för In-Place Heapsort 1. while n is less than table.length: 2. increment n by 1 (this inserts a new item into the heap) 3. restore the heap property 4. while the heap is not empty: 5. remove the first item from the heap by swapping it with the last item in the heap 6. restore the heap property

Analys av Heapsort Heapar är logaritmiska: stoppa in/ta bort element är O(log n) att stoppa in n element är O(n log n) att ta bort n element är också O(n log n) O(n log n) + O(n log n) = O(n log n) algoritmen kräver inget extra minne 63