常見的排序演算法 堆排序

2021-09-29 02:18:53 字數 528 閱讀 8320

堆是一種特殊的樹形結構,其每個節點都有乙個值,通常的堆指的是一顆完全二叉樹,根的節點大於(或小於)兩個子節點的值,而堆排序是一種樹形選擇排序,在排序過程中將a[.0…n]看做是完全二叉樹的順序儲存結構,利用完全二叉樹中父節點與子節點的內在關係來選擇最小的元素或者最大的元素。

堆分為大頂堆和小頂堆,父節點比兩個子節點大為大頂堆,反之則是小頂堆。此時堆頂一定是最大值或者最最小值。

堆排序是先將數列化為大頂堆或者小頂堆,將堆頂元素與當前堆最後乙個元素進行調換,堆的最後乙個元素即為最大或者最小記錄,接著將前(n-1)個元素繼續調整為最大堆或者最小堆,再將堆頂元素與當前堆的最後乙個元素互換,重複以上操作直到只剩乙個元素為止,最後可得到乙個有序數列。

左子節點下標=2*父節點下標+1;

**示例:

private void createheap(int array,int index,int size) 

for (int i = 0; i < array.length - 1; i++)

}

常見排序演算法 堆排序演算法

基本思想 先將待排序資料化為完全二叉樹,從length 2 1處開始尋找他的左 右子節點,將較大值與父節點進行交換,最後遍歷到根節點處,此時根節點為所有數中的最大值,將該值與最後乙個元素進行交換,length length 1,又從父節點開始進行比較,繼續尋找較大值。將找到的較大值與length 2...

常見排序演算法之堆排序

1.簡介 堆排序是指利用堆這種資料結構所設計的一種排序演算法。2.堆排序中大堆和小堆 大堆 根節點比子節點大 小堆 跟節點比子節點小 3.核心思想 採用大堆的資料結構為例子。陣列轉完全二叉樹,再把這個完全二叉樹構成乙個大堆,將堆頂根節點和末尾節點互換。把剩下的n 1個元素重新構造成大頂堆 最大值已經...

排序演算法 堆排序

1 什麼是堆 首先它是一顆完全二叉樹,並且父結點的值大於子節點的值 最大堆 或父結點的值小於子結點的值 最小堆 小根堆 根結點 亦稱為堆頂 的關鍵字是堆裡所有結點關鍵字中最小者的堆稱為小根堆,又稱最小堆。大根堆 根結點 亦稱為堆頂 的關鍵字是堆裡所有結點關鍵字中最大者,稱為大根堆,又稱最大堆。2 堆...