floyd’s buildheap, sorting · -heap review and array implementation of heap -floyd’s buildheap...

25
Floyd’s buildHeap, Sorting CSE 373: Data Structures and Algorithms Thanks to Kasey Champion, Ben Jones, Adam Blank, Michael Lee, Evan McCarty, Robbie Weber, Whitaker Brand, Zora Fung, Stuart Reges, Justin Hsia, Ruth Anderson, and many others for sample slides and materials ... Autumn 2018 Shrirang (Shri) Mare [email protected]

Upload: others

Post on 19-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

Floyd’s buildHeap, Sorting

CSE 373: Data Structures and Algorithms

Thanks to Kasey Champion, Ben Jones, Adam Blank, Michael Lee, Evan McCarty, Robbie Weber, Whitaker Brand, Zora Fung, Stuart Reges, Justin Hsia, Ruth Anderson, and many others for sample slides and materials ...

Autumn 2018

Shrirang (Shri) Mare [email protected]

Page 2: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

-Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm - Intro to Sorting - Insertion sort -Heap sort

Today

!2

Page 3: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

Heap is a tree-based data structure that satisfies - (a) structure property: it’s a complete tree - (b) heap property, which states: - for min-heap: - for max-heap:

- Operations (for min-heap): - removeMin()- peekMin()- insert()

- Applications: priority queue, sorting, ..

Heap review

!3

paren t ≤ ch ildrenparen t ≥ ch ildren

Shrirang
Page 4: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

removeMin()

!5

1

354

6294 1139

96 95 75 82 43 50 36 49

min-heap

function removeMinlast = last node in the treeminvalue = rootswap root with lastpercolateDown(root)return minvalue

end function<latexit sha1_base64="0oZpHWbxCd26cpWZMvf2MmWbEhw=">AAADVnicbVLbbhMxEPUmlJZwS+GRF4ukUpFQlfSFviAqcREvSEWQtlISRV7vJLHqy8oeJ0SrfAGv8G/wM8BsLtCkjLTa43NmPBdPmmsVsNX6mVSqt3Zu7+7dqd29d//Bw/r+o/PgopfQkU47f5mKAFpZ6KBCDZe5B2FSDRfp1etSv5iAD8rZzzjLoW/EyKqhkgKJGtR/91IYKVsIPXJe4djMa9uMksS9i1aWEYUH4ybwQdl5QfQnFAi8qUXAJn/Jyz+3LgOuLMcxcPQAf72MshOhI5Cjdw6bayFMRc6bC4pPKePqvrWcg6c+Cb1xU3u49Hu2Fj1g9Pbf3RT11mbrams9sNlWJxvMfFBvtI5aC+M3QXsFGmxlZ4P95FUvczIasCipztDFqaP6orHP260c+4XwqKQGShUD5EJeiRF0CVphIPSLxZvN+QExGR86T59FvmCvRxTChDAzKXkageOwrZXk/7RuxOFJv1A2jwhWLhMNo+boeLkAPFMeJOoZASFpCEpyORZeSKQ12cxybSc26TxApCHQQ5NEZw8WptIZI2zWQ/iCuXeymB/wTtkkZU6BL/ggazUaeXt7wDfB+fFRm/DH48bpyWr4e+wJe8oOWZu9YKfsPTtjHSYTSL4m35LvlR+VX9Wd6u7StZKsYh6zDavW/wDtWhQE</latexit><latexit sha1_base64="0oZpHWbxCd26cpWZMvf2MmWbEhw=">AAADVnicbVLbbhMxEPUmlJZwS+GRF4ukUpFQlfSFviAqcREvSEWQtlISRV7vJLHqy8oeJ0SrfAGv8G/wM8BsLtCkjLTa43NmPBdPmmsVsNX6mVSqt3Zu7+7dqd29d//Bw/r+o/PgopfQkU47f5mKAFpZ6KBCDZe5B2FSDRfp1etSv5iAD8rZzzjLoW/EyKqhkgKJGtR/91IYKVsIPXJe4djMa9uMksS9i1aWEYUH4ybwQdl5QfQnFAi8qUXAJn/Jyz+3LgOuLMcxcPQAf72MshOhI5Cjdw6bayFMRc6bC4pPKePqvrWcg6c+Cb1xU3u49Hu2Fj1g9Pbf3RT11mbrams9sNlWJxvMfFBvtI5aC+M3QXsFGmxlZ4P95FUvczIasCipztDFqaP6orHP260c+4XwqKQGShUD5EJeiRF0CVphIPSLxZvN+QExGR86T59FvmCvRxTChDAzKXkageOwrZXk/7RuxOFJv1A2jwhWLhMNo+boeLkAPFMeJOoZASFpCEpyORZeSKQ12cxybSc26TxApCHQQ5NEZw8WptIZI2zWQ/iCuXeymB/wTtkkZU6BL/ggazUaeXt7wDfB+fFRm/DH48bpyWr4e+wJe8oOWZu9YKfsPTtjHSYTSL4m35LvlR+VX9Wd6u7StZKsYh6zDavW/wDtWhQE</latexit><latexit sha1_base64="0oZpHWbxCd26cpWZMvf2MmWbEhw=">AAADVnicbVLbbhMxEPUmlJZwS+GRF4ukUpFQlfSFviAqcREvSEWQtlISRV7vJLHqy8oeJ0SrfAGv8G/wM8BsLtCkjLTa43NmPBdPmmsVsNX6mVSqt3Zu7+7dqd29d//Bw/r+o/PgopfQkU47f5mKAFpZ6KBCDZe5B2FSDRfp1etSv5iAD8rZzzjLoW/EyKqhkgKJGtR/91IYKVsIPXJe4djMa9uMksS9i1aWEYUH4ybwQdl5QfQnFAi8qUXAJn/Jyz+3LgOuLMcxcPQAf72MshOhI5Cjdw6bayFMRc6bC4pPKePqvrWcg6c+Cb1xU3u49Hu2Fj1g9Pbf3RT11mbrams9sNlWJxvMfFBvtI5aC+M3QXsFGmxlZ4P95FUvczIasCipztDFqaP6orHP260c+4XwqKQGShUD5EJeiRF0CVphIPSLxZvN+QExGR86T59FvmCvRxTChDAzKXkageOwrZXk/7RuxOFJv1A2jwhWLhMNo+boeLkAPFMeJOoZASFpCEpyORZeSKQ12cxybSc26TxApCHQQ5NEZw8WptIZI2zWQ/iCuXeymB/wTtkkZU6BL/ggazUaeXt7wDfB+fFRm/DH48bpyWr4e+wJe8oOWZu9YKfsPTtjHSYTSL4m35LvlR+VX9Wd6u7StZKsYh6zDavW/wDtWhQE</latexit><latexit sha1_base64="0oZpHWbxCd26cpWZMvf2MmWbEhw=">AAADVnicbVLbbhMxEPUmlJZwS+GRF4ukUpFQlfSFviAqcREvSEWQtlISRV7vJLHqy8oeJ0SrfAGv8G/wM8BsLtCkjLTa43NmPBdPmmsVsNX6mVSqt3Zu7+7dqd29d//Bw/r+o/PgopfQkU47f5mKAFpZ6KBCDZe5B2FSDRfp1etSv5iAD8rZzzjLoW/EyKqhkgKJGtR/91IYKVsIPXJe4djMa9uMksS9i1aWEYUH4ybwQdl5QfQnFAi8qUXAJn/Jyz+3LgOuLMcxcPQAf72MshOhI5Cjdw6bayFMRc6bC4pPKePqvrWcg6c+Cb1xU3u49Hu2Fj1g9Pbf3RT11mbrams9sNlWJxvMfFBvtI5aC+M3QXsFGmxlZ4P95FUvczIasCipztDFqaP6orHP260c+4XwqKQGShUD5EJeiRF0CVphIPSLxZvN+QExGR86T59FvmCvRxTChDAzKXkageOwrZXk/7RuxOFJv1A2jwhWLhMNo+boeLkAPFMeJOoZASFpCEpyORZeSKQ12cxybSc26TxApCHQQ5NEZw8WptIZI2zWQ/iCuXeymB/wTtkkZU6BL/ggazUaeXt7wDfB+fFRm/DH48bpyWr4e+wJe8oOWZu9YKfsPTtjHSYTSL4m35LvlR+VX9Wd6u7StZKsYh6zDavW/wDtWhQE</latexit>

Calls: removeMin()

Shrirang
Shrirang
Page 5: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

removeMin()

!6

49

354

6294 1139

96 95 75

function removeMinlast = last node in the treeminvalue = rootswap root with lastpercolateDown(root)return minvalue

end function<latexit sha1_base64="0oZpHWbxCd26cpWZMvf2MmWbEhw=">AAADVnicbVLbbhMxEPUmlJZwS+GRF4ukUpFQlfSFviAqcREvSEWQtlISRV7vJLHqy8oeJ0SrfAGv8G/wM8BsLtCkjLTa43NmPBdPmmsVsNX6mVSqt3Zu7+7dqd29d//Bw/r+o/PgopfQkU47f5mKAFpZ6KBCDZe5B2FSDRfp1etSv5iAD8rZzzjLoW/EyKqhkgKJGtR/91IYKVsIPXJe4djMa9uMksS9i1aWEYUH4ybwQdl5QfQnFAi8qUXAJn/Jyz+3LgOuLMcxcPQAf72MshOhI5Cjdw6bayFMRc6bC4pPKePqvrWcg6c+Cb1xU3u49Hu2Fj1g9Pbf3RT11mbrams9sNlWJxvMfFBvtI5aC+M3QXsFGmxlZ4P95FUvczIasCipztDFqaP6orHP260c+4XwqKQGShUD5EJeiRF0CVphIPSLxZvN+QExGR86T59FvmCvRxTChDAzKXkageOwrZXk/7RuxOFJv1A2jwhWLhMNo+boeLkAPFMeJOoZASFpCEpyORZeSKQ12cxybSc26TxApCHQQ5NEZw8WptIZI2zWQ/iCuXeymB/wTtkkZU6BL/ggazUaeXt7wDfB+fFRm/DH48bpyWr4e+wJe8oOWZu9YKfsPTtjHSYTSL4m35LvlR+VX9Wd6u7StZKsYh6zDavW/wDtWhQE</latexit><latexit sha1_base64="0oZpHWbxCd26cpWZMvf2MmWbEhw=">AAADVnicbVLbbhMxEPUmlJZwS+GRF4ukUpFQlfSFviAqcREvSEWQtlISRV7vJLHqy8oeJ0SrfAGv8G/wM8BsLtCkjLTa43NmPBdPmmsVsNX6mVSqt3Zu7+7dqd29d//Bw/r+o/PgopfQkU47f5mKAFpZ6KBCDZe5B2FSDRfp1etSv5iAD8rZzzjLoW/EyKqhkgKJGtR/91IYKVsIPXJe4djMa9uMksS9i1aWEYUH4ybwQdl5QfQnFAi8qUXAJn/Jyz+3LgOuLMcxcPQAf72MshOhI5Cjdw6bayFMRc6bC4pPKePqvrWcg6c+Cb1xU3u49Hu2Fj1g9Pbf3RT11mbrams9sNlWJxvMfFBvtI5aC+M3QXsFGmxlZ4P95FUvczIasCipztDFqaP6orHP260c+4XwqKQGShUD5EJeiRF0CVphIPSLxZvN+QExGR86T59FvmCvRxTChDAzKXkageOwrZXk/7RuxOFJv1A2jwhWLhMNo+boeLkAPFMeJOoZASFpCEpyORZeSKQ12cxybSc26TxApCHQQ5NEZw8WptIZI2zWQ/iCuXeymB/wTtkkZU6BL/ggazUaeXt7wDfB+fFRm/DH48bpyWr4e+wJe8oOWZu9YKfsPTtjHSYTSL4m35LvlR+VX9Wd6u7StZKsYh6zDavW/wDtWhQE</latexit><latexit sha1_base64="0oZpHWbxCd26cpWZMvf2MmWbEhw=">AAADVnicbVLbbhMxEPUmlJZwS+GRF4ukUpFQlfSFviAqcREvSEWQtlISRV7vJLHqy8oeJ0SrfAGv8G/wM8BsLtCkjLTa43NmPBdPmmsVsNX6mVSqt3Zu7+7dqd29d//Bw/r+o/PgopfQkU47f5mKAFpZ6KBCDZe5B2FSDRfp1etSv5iAD8rZzzjLoW/EyKqhkgKJGtR/91IYKVsIPXJe4djMa9uMksS9i1aWEYUH4ybwQdl5QfQnFAi8qUXAJn/Jyz+3LgOuLMcxcPQAf72MshOhI5Cjdw6bayFMRc6bC4pPKePqvrWcg6c+Cb1xU3u49Hu2Fj1g9Pbf3RT11mbrams9sNlWJxvMfFBvtI5aC+M3QXsFGmxlZ4P95FUvczIasCipztDFqaP6orHP260c+4XwqKQGShUD5EJeiRF0CVphIPSLxZvN+QExGR86T59FvmCvRxTChDAzKXkageOwrZXk/7RuxOFJv1A2jwhWLhMNo+boeLkAPFMeJOoZASFpCEpyORZeSKQ12cxybSc26TxApCHQQ5NEZw8WptIZI2zWQ/iCuXeymB/wTtkkZU6BL/ggazUaeXt7wDfB+fFRm/DH48bpyWr4e+wJe8oOWZu9YKfsPTtjHSYTSL4m35LvlR+VX9Wd6u7StZKsYh6zDavW/wDtWhQE</latexit><latexit sha1_base64="0oZpHWbxCd26cpWZMvf2MmWbEhw=">AAADVnicbVLbbhMxEPUmlJZwS+GRF4ukUpFQlfSFviAqcREvSEWQtlISRV7vJLHqy8oeJ0SrfAGv8G/wM8BsLtCkjLTa43NmPBdPmmsVsNX6mVSqt3Zu7+7dqd29d//Bw/r+o/PgopfQkU47f5mKAFpZ6KBCDZe5B2FSDRfp1etSv5iAD8rZzzjLoW/EyKqhkgKJGtR/91IYKVsIPXJe4djMa9uMksS9i1aWEYUH4ybwQdl5QfQnFAi8qUXAJn/Jyz+3LgOuLMcxcPQAf72MshOhI5Cjdw6bayFMRc6bC4pPKePqvrWcg6c+Cb1xU3u49Hu2Fj1g9Pbf3RT11mbrams9sNlWJxvMfFBvtI5aC+M3QXsFGmxlZ4P95FUvczIasCipztDFqaP6orHP260c+4XwqKQGShUD5EJeiRF0CVphIPSLxZvN+QExGR86T59FvmCvRxTChDAzKXkageOwrZXk/7RuxOFJv1A2jwhWLhMNo+boeLkAPFMeJOoZASFpCEpyORZeSKQ12cxybSc26TxApCHQQ5NEZw8WptIZI2zWQ/iCuXeymB/wTtkkZU6BL/ggazUaeXt7wDfB+fFRm/DH48bpyWr4e+wJe8oOWZu9YKfsPTtjHSYTSL4m35LvlR+VX9Wd6u7StZKsYh6zDavW/wDtWhQE</latexit>

82 43 50 36

Broken heap

Calls: removeMin() 1

Page 6: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

removeMin()

!7

49

354

6294 1139

96 95 75

1: function percolateDown(node)2: l = left child of node3: r = right child of node4: smallest = smallest in {l, r, node}5: if smallest 6= node then6: exchange node with smallest7: percolate(smallest)8: end if9: end function

<latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit>

82 43 50 36

Broken heap

Calls: removeMin() 1

nodepercolateDown(root)

smallest

Shrirang
Shrirang
Shrirang
Shrirang
Shrirang
Page 7: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

removeMin()

!8

3

4954

6294 1139

96 95 75

1: function percolateDown(node)2: l = left child of node3: r = right child of node4: smallest = smallest in {l, r, node}5: if smallest 6= node then6: exchange node with smallest7: percolate(smallest)8: end if9: end function

<latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit>

82 43 50 36

Broken heap

Calls: removeMin() 1

node

smallestpercolateDown(smallest)

Shrirang
Shrirang
Shrirang
Page 8: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

removeMin()

!9

3

4954

6294 1139

96 95 75

1: function percolateDown(node)2: l = left child of node3: r = right child of node4: smallest = smallest in {l, r, node}5: if smallest 6= node then6: exchange node with smallest7: percolate(smallest)8: end if9: end function

<latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit>

82 43 50 36

Broken heap

Calls: removeMin() 1

node

smallest

Shrirang
Shrirang
Page 9: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

removeMin()

!10

3

1154

6294 4939

96 95 75

1: function percolateDown(node)2: l = left child of node3: r = right child of node4: smallest = smallest in {l, r, node}5: if smallest 6= node then6: exchange node with smallest7: percolate(smallest)8: end if9: end function

<latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit>

82 43 50 36

Broken heap

Calls: removeMin() 1

node

smallestpercolateDown(smallest)

Shrirang
Shrirang
Page 10: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

removeMin()

!11

3

1154

6294 4939

96 95 75

1: function percolateDown(node)2: l = left child of node3: r = right child of node4: smallest = smallest in {l, r, node}5: if smallest 6= node then6: exchange node with smallest7: percolate(smallest)8: end if9: end function

<latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit>

82 43 50 36

Broken heap

Calls: removeMin() 1

node

smallest

Shrirang
Shrirang
Page 11: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

removeMin()

!12

3

1154

6294 3639

96 95 75

1: function percolateDown(node)2: l = left child of node3: r = right child of node4: smallest = smallest in {l, r, node}5: if smallest 6= node then6: exchange node with smallest7: percolate(smallest)8: end if9: end function

<latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit><latexit sha1_base64="mKMz2l4Z7VEEf7X/wJ+yUgIQ8UE=">AAADrHicdVLLbtNAFLVrHsW8WliyGZFUKlIUxd3QDaISD9FdEUlbKY6q8fjaGXUeZmZMGln+Mr6EJVv4Ca7zIklhJMvH556r43vmJoXg1vV6P/yd4M7de/d3H4QPHz1+8nRv/9m51aVhMGBaaHOZUAuCKxg47gRcFgaoTARcJNfvmvrFNzCWa9V30wJGkuaKZ5xRh9TVvt+PE8i5qqjIteFuLOtwm+GsHkajMP5YKtZ0VQUYdKYO3uuJqqu20im0se+LQ460RZu8IQIyR9iYi5TojMwlK4VpFIbn4/9LrKRCgHWNcokJV6QdV6JDTIc08rjGhtOMVCs5iRV8JZs/BDdsTFUOCwsywaHWDJay1VSHf2uvwviDSk+z2Ws5fxiDSjfi2WLqq71Wr9ubHXIbRAvQ8hbnDO/hbZxqVkpQjglq7dBNNP5NKVUn6hVuVFHjOBOAVqWFgrJrmsMQoaIS7KiabUJNDpBJSaYNPgrDbdj1jopKa6cyQaWkbmy3aw35r9qwdNnxqOKqKB0oNjfKSkGcJs1akZQbYE5MEVCGIXCGN0sNZQ6Xb9NlbdE26cJCiSHgHWEJvw0omDAtJVVp7ODGFUazqj4gg2ZIdE6AzHjLwhAjj7YDvg3Oj7oR4s9HrZPjRfi73gvvpXfoRd5r78T75J15A4/53/2f/i//d9AN+sEwGM2lO/6i57m3cYLsD2LCL1o=</latexit>

82 43 50 49

Calls: removeMin() 1

node

smallest

min-heappercolateDown(smallest)

Shrirang
Shrirang
Shrirang
Page 12: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

removeMin()

3

1154

6294 3639

96 95 75 82 43 50 49

node

smallest

min-heappercolateDown(smallest)

function removeMinlast = last node in the treeminvalue = rootswap root with lastpercolateDown(root)return minvalue

end function<latexit sha1_base64="0oZpHWbxCd26cpWZMvf2MmWbEhw=">AAADVnicbVLbbhMxEPUmlJZwS+GRF4ukUpFQlfSFviAqcREvSEWQtlISRV7vJLHqy8oeJ0SrfAGv8G/wM8BsLtCkjLTa43NmPBdPmmsVsNX6mVSqt3Zu7+7dqd29d//Bw/r+o/PgopfQkU47f5mKAFpZ6KBCDZe5B2FSDRfp1etSv5iAD8rZzzjLoW/EyKqhkgKJGtR/91IYKVsIPXJe4djMa9uMksS9i1aWEYUH4ybwQdl5QfQnFAi8qUXAJn/Jyz+3LgOuLMcxcPQAf72MshOhI5Cjdw6bayFMRc6bC4pPKePqvrWcg6c+Cb1xU3u49Hu2Fj1g9Pbf3RT11mbrams9sNlWJxvMfFBvtI5aC+M3QXsFGmxlZ4P95FUvczIasCipztDFqaP6orHP260c+4XwqKQGShUD5EJeiRF0CVphIPSLxZvN+QExGR86T59FvmCvRxTChDAzKXkageOwrZXk/7RuxOFJv1A2jwhWLhMNo+boeLkAPFMeJOoZASFpCEpyORZeSKQ12cxybSc26TxApCHQQ5NEZw8WptIZI2zWQ/iCuXeymB/wTtkkZU6BL/ggazUaeXt7wDfB+fFRm/DH48bpyWr4e+wJe8oOWZu9YKfsPTtjHSYTSL4m35LvlR+VX9Wd6u7StZKsYh6zDavW/wDtWhQE</latexit><latexit sha1_base64="0oZpHWbxCd26cpWZMvf2MmWbEhw=">AAADVnicbVLbbhMxEPUmlJZwS+GRF4ukUpFQlfSFviAqcREvSEWQtlISRV7vJLHqy8oeJ0SrfAGv8G/wM8BsLtCkjLTa43NmPBdPmmsVsNX6mVSqt3Zu7+7dqd29d//Bw/r+o/PgopfQkU47f5mKAFpZ6KBCDZe5B2FSDRfp1etSv5iAD8rZzzjLoW/EyKqhkgKJGtR/91IYKVsIPXJe4djMa9uMksS9i1aWEYUH4ybwQdl5QfQnFAi8qUXAJn/Jyz+3LgOuLMcxcPQAf72MshOhI5Cjdw6bayFMRc6bC4pPKePqvrWcg6c+Cb1xU3u49Hu2Fj1g9Pbf3RT11mbrams9sNlWJxvMfFBvtI5aC+M3QXsFGmxlZ4P95FUvczIasCipztDFqaP6orHP260c+4XwqKQGShUD5EJeiRF0CVphIPSLxZvN+QExGR86T59FvmCvRxTChDAzKXkageOwrZXk/7RuxOFJv1A2jwhWLhMNo+boeLkAPFMeJOoZASFpCEpyORZeSKQ12cxybSc26TxApCHQQ5NEZw8WptIZI2zWQ/iCuXeymB/wTtkkZU6BL/ggazUaeXt7wDfB+fFRm/DH48bpyWr4e+wJe8oOWZu9YKfsPTtjHSYTSL4m35LvlR+VX9Wd6u7StZKsYh6zDavW/wDtWhQE</latexit><latexit sha1_base64="0oZpHWbxCd26cpWZMvf2MmWbEhw=">AAADVnicbVLbbhMxEPUmlJZwS+GRF4ukUpFQlfSFviAqcREvSEWQtlISRV7vJLHqy8oeJ0SrfAGv8G/wM8BsLtCkjLTa43NmPBdPmmsVsNX6mVSqt3Zu7+7dqd29d//Bw/r+o/PgopfQkU47f5mKAFpZ6KBCDZe5B2FSDRfp1etSv5iAD8rZzzjLoW/EyKqhkgKJGtR/91IYKVsIPXJe4djMa9uMksS9i1aWEYUH4ybwQdl5QfQnFAi8qUXAJn/Jyz+3LgOuLMcxcPQAf72MshOhI5Cjdw6bayFMRc6bC4pPKePqvrWcg6c+Cb1xU3u49Hu2Fj1g9Pbf3RT11mbrams9sNlWJxvMfFBvtI5aC+M3QXsFGmxlZ4P95FUvczIasCipztDFqaP6orHP260c+4XwqKQGShUD5EJeiRF0CVphIPSLxZvN+QExGR86T59FvmCvRxTChDAzKXkageOwrZXk/7RuxOFJv1A2jwhWLhMNo+boeLkAPFMeJOoZASFpCEpyORZeSKQ12cxybSc26TxApCHQQ5NEZw8WptIZI2zWQ/iCuXeymB/wTtkkZU6BL/ggazUaeXt7wDfB+fFRm/DH48bpyWr4e+wJe8oOWZu9YKfsPTtjHSYTSL4m35LvlR+VX9Wd6u7StZKsYh6zDavW/wDtWhQE</latexit><latexit sha1_base64="0oZpHWbxCd26cpWZMvf2MmWbEhw=">AAADVnicbVLbbhMxEPUmlJZwS+GRF4ukUpFQlfSFviAqcREvSEWQtlISRV7vJLHqy8oeJ0SrfAGv8G/wM8BsLtCkjLTa43NmPBdPmmsVsNX6mVSqt3Zu7+7dqd29d//Bw/r+o/PgopfQkU47f5mKAFpZ6KBCDZe5B2FSDRfp1etSv5iAD8rZzzjLoW/EyKqhkgKJGtR/91IYKVsIPXJe4djMa9uMksS9i1aWEYUH4ybwQdl5QfQnFAi8qUXAJn/Jyz+3LgOuLMcxcPQAf72MshOhI5Cjdw6bayFMRc6bC4pPKePqvrWcg6c+Cb1xU3u49Hu2Fj1g9Pbf3RT11mbrams9sNlWJxvMfFBvtI5aC+M3QXsFGmxlZ4P95FUvczIasCipztDFqaP6orHP260c+4XwqKQGShUD5EJeiRF0CVphIPSLxZvN+QExGR86T59FvmCvRxTChDAzKXkageOwrZXk/7RuxOFJv1A2jwhWLhMNo+boeLkAPFMeJOoZASFpCEpyORZeSKQ12cxybSc26TxApCHQQ5NEZw8WptIZI2zWQ/iCuXeymB/wTtkkZU6BL/ggazUaeXt7wDfB+fFRm/DH48bpyWr4e+wJe8oOWZu9YKfsPTtjHSYTSL4m35LvlR+VX9Wd6u7StZKsYh6zDavW/wDtWhQE</latexit>

O(n ) + c1 + O(n log n ) = O(n )

Runtime of removeMin():

How can we do better?

Shrirang
Shrirang
Shrirang
Page 13: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

Binary heap: Array implementation

!14Indices 0 1 2 3 4 5 6 7 8 9 10 11 12

1

354

6294 1139

96 95 75 82 43 50 36 49

13 14 15

1

354

6294 1139

96 95 75 82 43 50 36 49

Shrirang
Shrirang
Shrirang
Shrirang
Page 14: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

Binary heap: Array implementation

!15Indices 0 1 2 3 4 5 6 7 8 9 10 11 12

1

354

6294 1139

96 95 75 82 43 50 36 49

13 14 15

1

354

6294 1139

96 95 75 82 43 50 36 49

Shrirang
Shrirang
Page 15: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

Binary heap: Array implementation

!16Indices 0 1 2 3 4 5 6 7 8 9 10 11 12

1

354

6294 1139

96 95 75 82 43 50 36 49

13 14 15

1 354

6294 1139

96 95 75 82 43 50 36 49

Shrirang
Shrirang
Page 16: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

Binary heap: Array implementation

!17Indices 0 1 2 3 4 5 6 7 8 9 10 11 12

1

354

6294 1139

96 95 75 82 43 50 36 49

13 14 15

1 354 6294 1139

96 95 75 82 43 50 36 49

Page 17: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

Binary heap: Array implementation

!18Indices 0 1 2 3 4 5 6 7 8 9 10 11 12

1

354

6294 1139

96 95 75 82 43 50 36 49

13 14 15

1 354 6294 1139 96 95 75 82 43 50 36 49

Page 18: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

Binary heap: Array implementation

!19Indices 0 1 2 3 4 5 6 7 8 9 10 11 12

1

354

6294 1139

96 95 75 82 43 50 36 49

13 14 15

1 354 6294 1139 96 95 75 82 43 50 36 49

With array starting at index 1

leftCh ild(i) = 2irig h tCh ild(i) = 2i + 1

paren t(i) = ⌊ i2 ⌋

Shrirang
Shrirang
Page 19: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

Binary heap: Array implementation

!20Indices 0 1 2 3 4 5 6 7 8 9 10 11 12

1

354

6294 1139

96 95 75 82 43 50 36 49

13 14 15

With array starting at index 0

leftCh ild(i) = 2i + 1rig h tCh ild(i) = 2i + 2

paren t(i) = ⌊ i − 12 ⌋

1 354 6294 1139 96 95 75 82 43 50 36 49

Shrirang
Page 20: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

Sorting

!21

Page 21: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

- - Problem: Arrange items in a collection in a specified order. - - Lots of applications:

- lookup / search-merging sequences-data processing-Lots of sorting algorithms out there -Why study sorting?

Sorting

!22

Page 22: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

1. Comparison Sorts - Order of elements determined by comparing them- Fastest comparison sort: - Elements should support compareTo()

2. Non-comparison Sorts - Order of elements determined by leveraging properties of input- Typical runtime: - Also called as Niche Sorts aka “linear sorts”

Types of sorting algorithms

!23

O(n log n )

O(n )

In this class we’ll focus on comparison sorts

Page 23: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

Insertion sort

!24

0 1 2 3 4 5 6 7 8 9

2 3 6 7 5 1 4 10 2 8

https://visualgo.net/en/sorting

Page 24: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

-Runtime:

-Stable:

- In-place:

Insertion sort

!25

0 1 2 3 4 5 6 7 8 9

2 3 6 7 5 1 4 10 2 8

for i = 0 to n docurrent = A[i]j = findNewIndex(current, i)shift elements from j to i� 1 by 1A[j] = current

end for<latexit sha1_base64="vZ+KHMRGcGPgdBfgoExBcAwJaDE=">AAADMnicbZJLb9NAEMfX5lXMoykcuaxIKhUJKrsCwQWpFQKBkFARpK2UWNF6PU623YfZXdMGK9+KLwM3hLjxIRinVtSkzGn8m9l5/MdZKYXzcfwjCK9cvXb9xtrN6NbtO3fXOxv3DpypLIc+N9LYo4w5kEJD3wsv4ai0wFQm4TA7edXED7+CdcLoz35aQqrYWItCcOYRjTp/hhmMha6ZHBsr/ETNolUiOLI3xtJa0Jc0pt5QjeSTZx5oj1fWgvYY2RuItLfgx0gKofMPcPpO53C21SY+puLRIstNROEpSFAYcbSwRuHLXtOiJ54kPZpNabIouTc4TrFqWwiLvNY5zhUNQecr4y6RWTTqdOPteG70spO0Tpe0tj/aCJ4Nc8OrZi4umXODJC59WjPrBZeAHSoHJeMnbAwDdDVT4NJ6fo8Z3USS0wIlKwxKM6cXX9RMOTdVGWYq5iduNdbA/8UGlS9epLXQZeVB8/NGRSUbvZrj0lxY4F5O0WEcdxec8gmzjHv8BZa7XLj3Mi4dVLi6yZst8Ru1hlNulGI6H3o486U1vJ5t0n6zJHbOgM6541EjdLIq62XnYGc7Qf/jTnf3aSv5GnlAHpItkpDnZJe8JfukT3jwPvgSfAvq8Hv4M/wV/j5PDYP2zX2yZOHff820Axk=</latexit><latexit sha1_base64="vZ+KHMRGcGPgdBfgoExBcAwJaDE=">AAADMnicbZJLb9NAEMfX5lXMoykcuaxIKhUJKrsCwQWpFQKBkFARpK2UWNF6PU623YfZXdMGK9+KLwM3hLjxIRinVtSkzGn8m9l5/MdZKYXzcfwjCK9cvXb9xtrN6NbtO3fXOxv3DpypLIc+N9LYo4w5kEJD3wsv4ai0wFQm4TA7edXED7+CdcLoz35aQqrYWItCcOYRjTp/hhmMha6ZHBsr/ETNolUiOLI3xtJa0Jc0pt5QjeSTZx5oj1fWgvYY2RuItLfgx0gKofMPcPpO53C21SY+puLRIstNROEpSFAYcbSwRuHLXtOiJ54kPZpNabIouTc4TrFqWwiLvNY5zhUNQecr4y6RWTTqdOPteG70spO0Tpe0tj/aCJ4Nc8OrZi4umXODJC59WjPrBZeAHSoHJeMnbAwDdDVT4NJ6fo8Z3USS0wIlKwxKM6cXX9RMOTdVGWYq5iduNdbA/8UGlS9epLXQZeVB8/NGRSUbvZrj0lxY4F5O0WEcdxec8gmzjHv8BZa7XLj3Mi4dVLi6yZst8Ru1hlNulGI6H3o486U1vJ5t0n6zJHbOgM6541EjdLIq62XnYGc7Qf/jTnf3aSv5GnlAHpItkpDnZJe8JfukT3jwPvgSfAvq8Hv4M/wV/j5PDYP2zX2yZOHff820Axk=</latexit><latexit sha1_base64="vZ+KHMRGcGPgdBfgoExBcAwJaDE=">AAADMnicbZJLb9NAEMfX5lXMoykcuaxIKhUJKrsCwQWpFQKBkFARpK2UWNF6PU623YfZXdMGK9+KLwM3hLjxIRinVtSkzGn8m9l5/MdZKYXzcfwjCK9cvXb9xtrN6NbtO3fXOxv3DpypLIc+N9LYo4w5kEJD3wsv4ai0wFQm4TA7edXED7+CdcLoz35aQqrYWItCcOYRjTp/hhmMha6ZHBsr/ETNolUiOLI3xtJa0Jc0pt5QjeSTZx5oj1fWgvYY2RuItLfgx0gKofMPcPpO53C21SY+puLRIstNROEpSFAYcbSwRuHLXtOiJ54kPZpNabIouTc4TrFqWwiLvNY5zhUNQecr4y6RWTTqdOPteG70spO0Tpe0tj/aCJ4Nc8OrZi4umXODJC59WjPrBZeAHSoHJeMnbAwDdDVT4NJ6fo8Z3USS0wIlKwxKM6cXX9RMOTdVGWYq5iduNdbA/8UGlS9epLXQZeVB8/NGRSUbvZrj0lxY4F5O0WEcdxec8gmzjHv8BZa7XLj3Mi4dVLi6yZst8Ru1hlNulGI6H3o486U1vJ5t0n6zJHbOgM6541EjdLIq62XnYGc7Qf/jTnf3aSv5GnlAHpItkpDnZJe8JfukT3jwPvgSfAvq8Hv4M/wV/j5PDYP2zX2yZOHff820Axk=</latexit><latexit sha1_base64="vZ+KHMRGcGPgdBfgoExBcAwJaDE=">AAADMnicbZJLb9NAEMfX5lXMoykcuaxIKhUJKrsCwQWpFQKBkFARpK2UWNF6PU623YfZXdMGK9+KLwM3hLjxIRinVtSkzGn8m9l5/MdZKYXzcfwjCK9cvXb9xtrN6NbtO3fXOxv3DpypLIc+N9LYo4w5kEJD3wsv4ai0wFQm4TA7edXED7+CdcLoz35aQqrYWItCcOYRjTp/hhmMha6ZHBsr/ETNolUiOLI3xtJa0Jc0pt5QjeSTZx5oj1fWgvYY2RuItLfgx0gKofMPcPpO53C21SY+puLRIstNROEpSFAYcbSwRuHLXtOiJ54kPZpNabIouTc4TrFqWwiLvNY5zhUNQecr4y6RWTTqdOPteG70spO0Tpe0tj/aCJ4Nc8OrZi4umXODJC59WjPrBZeAHSoHJeMnbAwDdDVT4NJ6fo8Z3USS0wIlKwxKM6cXX9RMOTdVGWYq5iduNdbA/8UGlS9epLXQZeVB8/NGRSUbvZrj0lxY4F5O0WEcdxec8gmzjHv8BZa7XLj3Mi4dVLi6yZst8Ru1hlNulGI6H3o486U1vJ5t0n6zJHbOgM6541EjdLIq62XnYGc7Qf/jTnf3aSv5GnlAHpItkpDnZJe8JfukT3jwPvgSfAvq8Hv4M/wV/j5PDYP2zX2yZOHff820Axk=</latexit>

Page 25: Floyd’s buildHeap, Sorting · -Heap review and Array implementation of Heap -Floyd’s buildHeap algorithm -Intro to Sorting -Insertion sort -Heap sort Today!2. Heap is a tree-based

-1. Run Floyd’s buildHeap -2. removeMin() n times

Heap sort

!26