堆排序詳解

2021-07-10 11:25:00 字數 515 閱讀 8203

public class heapsort 

//此時已經完成了最大堆的構建,下面進行排序。

for(int i=len-1; i>0; i--)

} //維護最大堆,保證父節點大於等於子節點

public static void maxheapify(int a, int index, int len)

if(rightchildindexa[maxindex])

if(maxindex != index)

}//獲取當前節點的父節點下標

public static int getparentindex(int index)

//獲取當前節點的左兒子下標

public static int getleftchildindex(int index)

//獲取當前節點的右兒子下標

public static int getrightchildindex(int index)

}

排序詳解 堆排序

堆排序 heapsort 是指利用堆積樹 堆 這種資料結構所設計的一種排序演算法,它是選擇排序的一種。可以利用陣列的特點快速定位指定索引的元素。堆分為大根堆和小根堆,是完全二叉樹。大根堆的要求是每個節點的值都不大於其父節點的值,即a parent i a i 在陣列的非降序排序中,需要使用的就是大根...

堆排序詳解

一 堆的定義 堆的定義如下 n個關鍵字序列l n 成為堆,當且僅當該序列滿足 l i l 2i 且l i l 2i 1 或者 l i l 2i 且l i l 2i 1 其中i屬於 1,n 2 滿足第 種情況的堆稱為小根堆 小頂堆 滿足第 種情況的堆稱為大根堆 大頂堆 在大根堆中,最大元素存放在根結點...

堆排序詳解

基本概念 要了解堆排序,首先要了解什麼是堆,要了解堆,還要先了解什麼是完全二叉樹。一 什麼是完全二叉樹?完全二叉樹 complete binary tree 有嚴格的形狀要求 從根節點起每一層從左到右填充。一棵高度為d的完全二叉樹除了d 1層以外,每一層都是滿的。底層葉節點集中在左邊的若干位置上。完...