學習自嚴蔚敏、吳偉民的《資料結構》-清華大學出版
過於複雜,理解的不夠透徹,只存放**部分
1、建立堆:
/**
* 由於使得陣列元素遞增排序,所以先建乙個「大頂堆」,即先選得乙個關鍵字為最大的記錄並與序列中最後乙個記錄交換
* 所以,每次訪問陣列會是n-i
* @param arr-陣列元素
* @param s-開始位置-0
* @param m-結束位置-逐漸減1(從陣列長度開始)
*/public static void heapadjust(int arr, int s, int m)
// 若比第乙個結點(根結點)小,則結束本次迴圈
if (!(rc < arr[j]))
// 說明比根結點大,將至向前移動
arr[s] = arr[j];
// 記錄當前空出的結點位置
s = j;
} // 將空出結點的位置存放之前的根結點
arr[s] = rc;
}
2、通過上述方法將陣列排序(遞增)
public static void heapsort(int arr)
for (int i = arr.length - 1; i > 0; i--)
}
堆排序heapSort java實現
首先,堆分為兩種 大根堆和小根堆。均可看成是一棵完全二叉樹的順序儲存結構。對於大根堆,樹中任一節點的值均不小於其孩子節點的值 同樣,對於小根堆,樹中任一節點的值均不大於其孩子節點的值。對於樹中任一節點,若其下標為 i 則該節點的左右孩子的下標為 2i 1 和 2i 2。則對於任一節點n,其父節點的下...
堆排序 堆排序優化 索引堆排序
堆排序 堆排序優化 索引堆排序 注 堆排序 索引堆排序 都是不穩定的排序。注 索引最大堆排序有誤!有沒有大神可以指點一二?1 堆 所有元素 都從索引0開始 父親結點索引 i 左孩子結點索引 2i 1 右孩子結點索引 2i 2 左後乙個非葉子結點索引 n 1 2 用於構建堆,從最後乙個非葉子結點索引開...
堆排序 堆排序優化 索引堆排序
堆排序 堆排序優化 索引堆排序 注 堆排序 索引堆排序 都是不穩定的排序。注 索引最大堆排序有誤!有沒有大神可以指點一二?1 堆 所有元素 都從索引0開始 父親結點索引 i 左孩子結點索引 2i 1 右孩子結點索引 2i 2 左後乙個非葉子結點索引 n 1 2 用於構建堆,從最後乙個非葉子結點索引開...