- /*
- *
- * 堆積樹
- *
- */
- public class Heap_Tree {
- public void PrintHeapTree(){
- for(int i : HeapTree)
- if(i!=0)
- System.out.print(i+" ");
- System.out.println();
- }
- public static void main(String args[]){
- int[] tree = {0,51,23,45,15,32,47,96};//11 10 1-10
- Heap_Tree b =new Heap_Tree(tree);
- b.Sort();
- System.out.println("原始內容 :");
- b.PrintHeapTree();
- b.Print();
- }
- int[] HeapTree ;
- int End ;
- void Print(){
- int value ;
- for(int node = HeapTree.length-1 ; node > 0; node--){
- value = HeapTree[1] ;
- HeapTree[1] = HeapTree[node] ;
- HeapTree[node] = value;
- End = node;
- Sort();
- System.out.print("排序"+node+" : ");
- PrintHeapTree();
- }
- }
- void Sort(){//採用最大堆疊樹
- int parent ;
- for(int node = 1 ; node < HeapTree.length ; node++){//走訪1-- n-1 Node
- if( End == node) break ;//END為後面已經排序好
- if(node == 1 ) continue;
- do{
- parent=node/2;
- if(HeapTree[node] < HeapTree[parent])//父節點>子 跳出換下一個
- break;
- int tmp = HeapTree[node];
- HeapTree[node] = HeapTree[parent] ;
- HeapTree[parent] = tmp ;
- node = parent ; //將指標轉到parent
- }while(node != 1);//node等於1代表根節點
- }
- }
- Heap_Tree(int[] data){
- HeapTree = data ;
- }
- }
2017年7月29日 星期六
(Java)(資料結構)HeapTree
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。