堆排序之java實現

2021-08-09 11:38:08 字數 747 閱讀 2851

堆排序就是利用堆(假設利用大頂堆)進行排序的方法。它的基本思想是,將待排序的序列構造成乙個大頂堆。此時,整個序列的最大值就是堆頂的根節點。將它移走(其實就是將其與堆陣列的末尾元素交換,此時末尾元素就是最大值),然後將剩餘的 n-1 個序列重新構造成乙個堆,這樣就會得到 n 個元素中次大的值。如此反覆執行,便能得到乙個有序序列了。

堆排序的時間複雜度為o(nlogn)

public

class maxheap

public

void

buildmaxheap()

}public

void

heapsort()

}public

void

maxify(int i)

private

intparent(int i)

private

intleft(int i)

private

intright(int i)

}

測試**

int array=new

int;

maxheap heap=new maxheap(array);

heap.buildmaxheap();

heap.heapsort();

system.out.println("執行堆排序後陣列的內容");

printheap(heap.heap);

排序演算法之堆排序java實現

堆排序 heap sort 的基本思想是迴圈執行如下過程直到陣列為 空 什麼是最大堆?堆是乙個具有這樣性質的順序二叉樹,每個非葉子節點的關鍵字大於等於它的孩子結點的關鍵字。顯然在乙個堆中,根節點具有最大值,而且堆中任何乙個結點的非空左 右子樹都是乙個堆,它的根節點到任一葉子的每條路徑上的節點都是遞減...

java實現堆排序

許多應用要用堆,比如,優先佇列,即佇列的擴充,佇列的每個元素增加乙個稱為優先順序的字段,優先佇列可以是線性結構的,但要有較高的效率,應把它組織成堆結構。元素入隊是,相當於執行堆的插入演算法 但在隊頭每次刪除的總是隊頂具有最大優先順序的元素,因此可以把它稱為最大優先順序佇列。再比如,堆排序是選擇排序中...

堆排序java實現

公升序用大根堆,降序用小根堆 調整堆 從根節點開始向下調整堆 先建立初始堆,從n 2 1 第乙個非葉子節點 節點開始,將之看做根節點,向下調整堆,到根節點結束 迴圈i from n 1 to 0,每次取出堆的最頂層根節點,即陣列下標為0,然後與節點i交換,這樣對於大根堆而言,最大值總是在後面,再從根...