cs 241 data organization heapsort
play

CS 241 Data Organization Heapsort February 15, 2018 Heapsort - PowerPoint PPT Presentation

CS 241 Data Organization Heapsort February 15, 2018 Heapsort algorithm Make heap While heap is not empty Remove largest item Restore heap property What is a heap? Complete Binary Tree Binary Tree: Each node has at most 2


  1. CS 241 Data Organization Heapsort February 15, 2018

  2. Heapsort algorithm • Make heap • While heap is not empty • Remove largest item • Restore heap property

  3. What is a heap? • Complete Binary Tree • Binary Tree: Each node has at most 2 children • Complete: All levels of tree are full (except maybe last) • Satisfies heap property for all nodes • Heap Property: Parent ≥ Child • Largest value is at the root. • Subtrees are also heaps.

  4. Complete Binary Tree as Array We can represent a complete binary tree as an array. • Root is at index zero • For a node at index i : • Left child is at index 2 i + 1 • Right child is at index 2 i + 2

  5. Example Heap X S M P C L K E A X S M P C L K E A

  6. Heapsort: swap #include <stdio.h> void swap(char a[], int i, int j) { char tmp = a[i]; a[i] = a[j]; a[j] = tmp; }

  7. Heapsort: siftDown void siftDown(char a[], int i, int n) { int left = 2*i+1; int right = 2*i+2; int largest = i; /* Is a child larger than this node? */ if(left < n && a[left] > a[largest ]) { largest = left; } if(right < n && a[right] > a[largest ]) { largest = right; } /* if child is larger , swap and fix subtree */ if(largest != i) { swap(a, i, largest ); siftDown(a, largest , n); } }

  8. Heapsort: heapify void heapify(char a[], int n) { int i; for(i = (n -2)/2; i >= 0; i--) { siftDown(a, i, n); } }

  9. Heapsort: heapsort void heapsort(char a[], int n) { int end; heapify(a, n); for(end = n-1; end > 0; end --) { printf(" Sorting: %s, end=%d\n", a, end); swap(a, 0, end); siftDown(a, 0, end); } }

  10. Heapsort: main void main(void) { char data [] = "CELKMSPXA"; printf("Original: %s\n", data ); heapsort(data , 9); printf(" Sorted: %s\n", data ); }

  11. Heapsort output Original: CELKMSPXA Sorting: XMSKCLPEA, end=8 Sorting: SMPKCLAEX, end=7 Sorting: PMLKCEASX, end=6 Sorting: MKLACEPSX, end=5 Sorting: LKEACMPSX, end=4 Sorting: KCEALMPSX, end=3 Sorting: ECAKLMPSX, end=2 Sorting: CAEKLMPSX, end=1 Sorted: ACEKLMPSX

  12. Analysis • Heapsort has worst case and average performance of O ( n log n ).

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend