![Page 1: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/1.jpg)
Koffman & Wolfgangkapitel 8, avsnitt 8
Heapsort
1
![Page 2: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/2.jpg)
Heapsort
Mergesort har komplexitet O(n log n)men det kräver temporärt ett extra fält
Heapsort kräver inte något extraminnedet är en in-place-algoritmsom namnet antyder använder algoritmen en heap för att sortera fältet
2
![Page 3: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/3.jpg)
Första versionen av Heapsort
En enkel Heapsort-algoritm:skapa en tom heaptag ett element i taget ur fältet och stoppa in i heapentag sedan ut elementen ur heapen ett i taget och stoppa tillbaka i fältet
Denhär versionen kräver extraminnehur gör man detta in-place?
3
![Page 4: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/4.jpg)
Heapsort in-place
Antag att vi har ett fält med n elementlåt första elementet vara en heap med ett elementutöka heapen med ett element i tagetlå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 sistaminska heapens storlek, och låt det nya översta elementet bubbla ner till rätt ställefortsätt så tills heapen bara har ett element
Vi måste bygga heapen som en max-heap, eftersom vi flyttar elementen sist i fältet hela tiden
4
![Page 5: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/5.jpg)
Trace of Heapsort
89
76 74
37 32 39 66
20 26 18 28 29 6
Heap OK
![Page 6: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/6.jpg)
Trace of Heapsort (cont.)
89
76 74
37 32 39 66
20 26 18 28 29 6
Remove
![Page 7: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/7.jpg)
Trace of Heapsort (cont.)
6
76 74
37 32 39 66
20 26 18 28 29 89
Reheap
![Page 8: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/8.jpg)
Trace of Heapsort (cont.)
76
6 74
37 32 39 66
20 26 18 28 29 89
![Page 9: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/9.jpg)
Trace of Heapsort (cont.)
76
37 74
6 32 39 66
20 26 18 28 29 89
![Page 10: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/10.jpg)
Trace of Heapsort (cont.)
76
37 74
26 32 39 66
20 6 18 28 29 89
![Page 11: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/11.jpg)
Trace of Heapsort (cont.)
76
37 74
26 32 39 66
20 6 18 28 29 89
Heap OK
![Page 12: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/12.jpg)
Trace of Heapsort (cont.)
76
37 74
26 32 39 66
20 6 18 28 29 89
Remove
![Page 13: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/13.jpg)
Trace of Heapsort (cont.)
29
37 74
26 32 39 66
20 6 18 28 76 89
Reheap
![Page 14: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/14.jpg)
Trace of Heapsort (cont.)
74
37 29
26 32 39 66
20 6 18 28 76 89
![Page 15: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/15.jpg)
Trace of Heapsort (cont.)
74
37 66
26 32 39 29
20 6 18 28 76 89
![Page 16: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/16.jpg)
Trace of Heapsort (cont.)
74
37 66
26 32 39 29
20 6 18 28 76 89
Heap OK
![Page 17: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/17.jpg)
Trace of Heapsort (cont.)
74
37 66
26 32 39 29
20 6 18 28 76 89
Remove
![Page 18: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/18.jpg)
Trace of Heapsort (cont.)
28
37 66
26 32 39 29
20 6 18 74 76 89
Reheap
![Page 19: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/19.jpg)
Trace of Heapsort (cont.)
66
37 28
26 32 39 29
20 6 18 74 76 89
![Page 20: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/20.jpg)
Trace of Heapsort (cont.)
66
37 39
26 32 28 29
20 6 18 74 76 89
![Page 21: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/21.jpg)
Trace of Heapsort (cont.)
66
37 39
26 32 28 29
20 6 18 74 76 89
Heap OK
![Page 22: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/22.jpg)
Trace of Heapsort (cont.)
66
37 39
26 32 28 29
20 6 18 74 76 89
Remove
![Page 23: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/23.jpg)
Trace of Heapsort (cont.)
18
37 39
26 32 28 29
20 6 66 74 76 89
Reheap
![Page 24: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/24.jpg)
Trace of Heapsort (cont.)
39
37 18
26 32 28 29
20 6 66 74 76 89
![Page 25: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/25.jpg)
Trace of Heapsort (cont.)
39
37 29
26 32 28 18
20 6 66 74 76 89
![Page 26: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/26.jpg)
Trace of Heapsort (cont.)
39
37 29
26 32 28 18
20 6 66 74 76 89
Heap OK
![Page 27: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/27.jpg)
Trace of Heapsort (cont.)
39
37 29
26 32 28 18
20 6 66 74 76 89
Remove
![Page 28: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/28.jpg)
Trace of Heapsort (cont.)
6
37 29
26 32 28 18
20 39 66 74 76 89
Reheap
![Page 29: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/29.jpg)
Trace of Heapsort (cont.)
37
6 29
26 32 28 18
20 39 66 74 76 89
![Page 30: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/30.jpg)
Trace of Heapsort (cont.)
37
32 29
26 6 28 18
20 39 66 74 76 89
![Page 31: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/31.jpg)
Trace of Heapsort (cont.)
37
32 29
26 6 28 18
20 39 66 74 76 89
Heap OK
![Page 32: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/32.jpg)
Trace of Heapsort (cont.)
37
32 29
26 6 28 18
20 39 66 74 76 89
Remove
![Page 33: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/33.jpg)
Trace of Heapsort (cont.)
20
32 29
26 6 28 18
37 39 66 74 76 89
Reheap
![Page 34: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/34.jpg)
Trace of Heapsort (cont.)
32
20 29
26 6 28 18
37 39 66 74 76 89
![Page 35: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/35.jpg)
Trace of Heapsort (cont.)
32
26 29
20 6 28 18
37 39 66 74 76 89
![Page 36: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/36.jpg)
Trace of Heapsort (cont.)
32
26 29
20 6 28 18
37 39 66 74 76 89
Heap OK
![Page 37: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/37.jpg)
Trace of Heapsort (cont.)
32
26 29
20 6 28 18
37 39 66 74 76 89
Remove
![Page 38: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/38.jpg)
Trace of Heapsort (cont.)
18
26 29
20 6 28 32
37 39 66 74 76 89
Reheap
![Page 39: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/39.jpg)
Trace of Heapsort (cont.)
29
26 18
20 6 28 32
37 39 66 74 76 89
![Page 40: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/40.jpg)
Trace of Heapsort (cont.)
29
26 28
20 6 18 32
37 39 66 74 76 89
![Page 41: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/41.jpg)
Trace of Heapsort (cont.)
29
26 28
20 6 18 32
37 39 66 74 76 89
Heap OK
![Page 42: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/42.jpg)
Trace of Heapsort (cont.)
29
26 28
20 6 18 32
37 39 66 74 76 89
Remove
![Page 43: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/43.jpg)
Trace of Heapsort (cont.)
18
26 28
20 6 29 32
37 39 66 74 76 89
Reheap
![Page 44: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/44.jpg)
Trace of Heapsort (cont.)
28
26 18
20 6 29 32
37 39 66 74 76 89
![Page 45: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/45.jpg)
Trace of Heapsort (cont.)
28
26 18
20 6 29 32
37 39 66 74 76 89
Heap OK
![Page 46: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/46.jpg)
Trace of Heapsort (cont.)
28
26 18
20 6 29 32
37 39 66 74 76 89
Remove
![Page 47: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/47.jpg)
Trace of Heapsort (cont.)
6
26 18
20 28 29 32
37 39 66 74 76 89
Reheap
![Page 48: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/48.jpg)
Trace of Heapsort (cont.)
26
6 18
20 28 29 32
37 39 66 74 76 89
![Page 49: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/49.jpg)
Trace of Heapsort (cont.)
26
20 18
6 28 29 32
37 39 66 74 76 89
![Page 50: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/50.jpg)
Trace of Heapsort (cont.)
26
20 18
6 28 29 32
37 39 66 74 76 89
Heap OK
![Page 51: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/51.jpg)
Trace of Heapsort (cont.)
26
20 18
6 28 29 32
37 39 66 74 76 89
Remove
![Page 52: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/52.jpg)
Trace of Heapsort (cont.)
6
20 18
26 28 29 32
37 39 66 74 76 89
Reheap
![Page 53: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/53.jpg)
Trace of Heapsort (cont.)
20
6 18
26 28 29 32
37 39 66 74 76 89
![Page 54: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/54.jpg)
Trace of Heapsort (cont.)
20
6 18
26 28 29 32
37 39 66 74 76 89
Heap OK
![Page 55: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/55.jpg)
Trace of Heapsort (cont.)
20
6 18
26 28 29 32
37 39 66 74 76 89
Remove
![Page 56: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/56.jpg)
Trace of Heapsort (cont.)
18
6 20
26 28 29 32
37 39 66 74 76 89
Reheap
![Page 57: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/57.jpg)
Trace of Heapsort (cont.)
18
6 20
26 28 29 32
37 39 66 74 76 89
Heap OK
![Page 58: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/58.jpg)
Trace of Heapsort (cont.)
18
6 20
26 28 29 32
37 39 66 74 76 89
Remove
![Page 59: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/59.jpg)
Trace of Heapsort (cont.)
6
18 20
26 28 29 32
37 39 66 74 76 89
Reheap
![Page 60: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/60.jpg)
Trace of Heapsort (cont.)
6
18 20
26 28 29 32
37 39 66 74 76 89
Heap OK
![Page 61: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/61.jpg)
Heapsort, implementering
Vi implementerar heapen som ett fält:
fältet är uppdelat i en heap-del och en sorterad listavarje element vi tar bort flyttas till slutet av fältetheap-delen av fältet minskar successivt
![Page 62: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/62.jpg)
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 property4.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
![Page 63: Heapsort - cse.chalmers.se · 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](https://reader035.vdocuments.pub/reader035/viewer/2022081615/5fd52e99caa9be3f9e29d081/html5/thumbnails/63.jpg)
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