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]
25
Embed
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
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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 ...
-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 data structure that satisfies - (a) structure property: it’s a complete tree - (b) heap property, which states: - for min-heap: - for max-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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Sorting
!21
- - 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
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”