用Java介紹Heap

文章推薦指數: 80 %
投票人數:10人

Heap用途. 只要是需要有效率地找出最大或最小值都會用到 heap ,像是 Heap Sort 、 Priority ... 用Java介紹Heap 2019/09/01 DataStructure Heap是啥? Heap是一種資料結構,中文又稱「堆積」。

而Heap又有兩種,最小堆積(Minheap)及最大堆積(Maxheap)。

最小堆積(Minheap) 特性 每個父節點絕對比自己兩個子節點還要小,如果破壞了這規則就不叫做最小堆積! 這邊要注意的是,整個heap裡面根節點(Root)一定是最小的!(很重要) Java實作Heapify publicstaticvoidmaxheapify(int[]arr,introot,intlength){ intmaxNode; intleftChild=2*root+1; intrightChild=2*root+2; if(leftChild=arr[root])){ maxNode=leftChild; } else{ maxNode=root; } if(rightChild=arr[maxNode])){ maxNode=rightChild; } if(maxNode!=root){ swap(arr,root,maxNode); maxheapify(arr,maxNode,length); } } 最大堆積(Maxheap) 特性 每個父節點絕對比自己兩個子節點還要大,如果破壞了這規則就不叫做最大堆積! 這邊要注意的是,整個heap裡面根節點(Root)一定是最大的!(也很重要) Java實作原始碼 publicstaticvoidminheapify(int[]arr,introot,intlength){ intminNode; intleftChild=2*root+1; intrightChild=2*root+2; if(leftChild



請為這篇文章評分?