Heap Sort

Heap Sort
最清新的讲解 https://www.youtube.com/watch?v=t0Cq6tVNRBA
Heap sort的数据结构是BS, 为了操作方便,会将BS flattened成一个一维数组。
       1
   2     3
4  5  6   7
坐标如上,
getLeftChildIndex(index) {return 2*index+1;}
getRightChildIndex(index) {return 2*index+2;}
getParent(index) {return (index-1) / 2}

每一次的insertion 会发生在the end of arrary, which is BS中的第一个available 的叶子节点。然后根据条件选择是否heapifyUp, 因此insertion的复杂度为O(log(n))

每一次的deletion 是先delete 该node,然后将最后的叶子节点也就是the end of array 摆放到被delete掉的节点的位置。然后根据条件选择是否heapifyDown. 因此,deletion的复杂度也为O(log(n))

Comments

Popular posts from this blog

Unique Binary Search Trees

Coin in Line