public class HeapSort {
public static void heapSort(int[] array) {
if (null == array || array.length < 2) {
return;
}
int index;
for (int i = 0; i < array.length; i++) {
index = array.length - i - 1;
maxHeap(array, index);
if (index != 0) {
array[0] ^= array[index];
array[index] ^= array[0];
array[0] ^= array[index];
}
}
}
private static void maxHeap(int[] array, int lastIndex) {
int k;
int index = (lastIndex - 1) / 2;
for (int i = index; i > -1; i--) {
k = i;
while (2 * k <= lastIndex - 1) {
int biggerIndex = 2 * k + 1;
if (biggerIndex < lastIndex && array[biggerIndex] < array[biggerIndex + 1]) {
biggerIndex++;
}
if (array[k] < array[biggerIndex]) {
array[k] ^= array[biggerIndex];
array[biggerIndex] ^= array[k];
array[k] ^= array[biggerIndex];
k = biggerIndex;
} else {
break;
}
}
}
}
}
JAVA堆排序(HEAP-SORT)
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
推薦閱讀更多精彩內容
- 堆排序是一種樹形選擇排序,是對直接選擇排序的有效改進。 基本思想: 堆頂元素(即第一個元素)必為最小項(小頂堆)或...
- 堆排序算法,基于選擇排序的思想,利用堆結構的性質來完成對數據的排序。 前提準備: 什么是堆結構:堆數據結構是一種數...
- 1、為什么要使用堆? 首先我們可以理解一下堆和棧之間的區別,第一從空間的分配來看的話,堆是手動申請和釋放空間,一般...
- 二叉堆 這個二叉堆和先進后出的那個堆不是一個。而且這個二叉堆從下標1開始存儲元素。 這里的二叉堆是個數組,也可以看...