java 堆排序

public class HeapSortClass {

final static int HEAP_SIZE = 13; //堆積樹大小

/*父結點*/public static int parent(int i){ return (int)Math.floor(i / 2);} /*左子結點*/public static int left(int i){ return 2 * i;} /*右子結點*/public static int right(int i){ return (2 * i + 1);} /*單一子結點最大堆積樹調整*/public static void Max_Heapify(int A[], int i, int heap_size){ int l = left(i); int r = right(i); int largest; int temp; if(l < heap_size && A[l] > A[i]) { largest = l; } else { largest = i; } if(r < heap_size && A[r] > A[largest]) { largest = r; } if(largest != i) { temp = A[i]; A[i] = A[largest]; A[largest] = temp; Max_Heapify(A, largest, heap_size); }} /*建立最大堆積樹*/public static void Build_Max_Heap(int A[]){ for(int i = (HEAP_SIZE-1)/2; i >= 0; i–) { Max_Heapify(A, i, HEAP_SIZE); }} /*印出樹狀結構*/public static void print(int A[]){ for(int i = 0; i < HEAP_SIZE;i++) {

System.out.print(A[i]+" "); } System.out.println();} /*堆積排序程序碼*/public static void HeapSort(int A[], int heap_size){ Build_Max_Heap(A); int temp; for(int i = heap_size – 1; i > 0; i–) { temp = A[0]; A[0] = A[i]; A[i] = temp; Max_Heapify(A, 0, i); } print(A);} /*輸入資料並做堆積排序*/public static void main(String args[]){ int A[] = new int[]{19, 1, 10, 14, 16, 4, 7, 9, 3, 2, 8, 5, 11}; HeapSort(A, HEAP_SIZE);}}

你的脸是为了呈现上帝赐给人类最贵重的礼物–微笑,

java 堆排序

相关文章:

你感兴趣的文章:

标签云: