生活随笔
收集整理的這篇文章主要介紹了
堆排序(利用最大堆)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package heap; ????import java.math.BigInteger; ????/** * 最大堆最小堆性質: * 完全二叉樹 * left=2i; * right=2i+1; * 最大堆:除根節點外,子節點<父節點 * 最小堆:除根節點外,子節點>父節點 * 堆排序算法復雜度:o(n*lgn) * * @author B.Chen * */??public class MaxHeap { ????????public int heapSize; ????????public int parent(int i) { ??????????return i / 2; ?????? } ????????public int left(int i) { ??????????return 2 * i; ?????? } ????????public int right(int i) { ??????????return 2 * i + 1; ?????? } ????????public void maxHeapify(int[] a, int i) { ??????????int l = left(i); ??????????int r = right(i); ??????????int largest = i; ??????????if (l < heapSize) { ??????????????if (a[l] > a[i]) { ?????????????????? largest = l; ?????????????? } ?????????? } ??????????if (r < heapSize) { ??????????????if (a[r] > a[largest]) { ?????????????????? largest = r; ?????????????? } ?????????? } ??????????if (largest != i) { ??????????????int temp = a[i]; ?????????????? a[i] = a[largest]; ?????????????? a[largest] = temp; ?????????????? maxHeapify(a, largest); ?????????? } ?????? } ????????public void builtMaxHeap(int[] a) { ?????????? heapSize = a.length; ??????????for (int i = (a.length - 1) / 2; i >= 0; i--) { ?????????????? maxHeapify(a, i); ?????????? } ?????? } ????????public void heapSort(int[] a) { ?????????? builtMaxHeap(a); ??????????for (int i = a.length - 1; i > 0; i--) { ??????????????int temp = a[0]; ?????????????? a[0] = a[i]; ?????????????? a[i] = temp; ?????????????? heapSize = heapSize - 1; ?????????????? maxHeapify(a, 0); ?????????? } ?????? } ????????public static void main(String[] args) { ?????????? MaxHeap mh = new MaxHeap(); ??????????int[] a = new int[] { 7, 6, 4, 2, 8, 3, 1, 5, 9, 0 }; ?????????? mh.heapSort(a); ??????????for (int i = 0; i < a.length; i++) { ?????????????? System.out.print(a[i] + " "); ?????????? } ?????? } ????}?? 其中2×i可以用二進制表示成i<<1
2×i+1可以表示成(i<<1)+1
轉載于:https://www.cnblogs.com/xinzhuangzi/archive/2010/05/16/4100618.html
總結
以上是生活随笔為你收集整理的堆排序(利用最大堆)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。