1. 由於用陣列來模擬堆的資料存放比較方便,且陣列0號位置作為哨兵
package com.jzm.heapmap;
public class maxheap >
public maxheap(int size) //end constructor
public boolean isempty()//判斷是否為空
public void doublearray()
heap = a;
}//擴大陣列空間
public void add(t newentry)
int newindex = lastindex;
int parentindex = newindex/2;
while(newindex >1 && newentry.compareto(heap[parentindex])>0)//end while
heap[newindex] = newentry;
}//end add
private void reheap(int rootindex) //找到最大的孩子
if(orphant.compareto(heap[largerchildindex])<0)else
}//end while
heap[rootindex] = orphant;
}//end reheap
public t removemax()//end if
return root;
} //end removemax
public t getmax()
return root;
}//end getmax 得到大頂堆頂數
public int getsize()//得到堆的大小
public void clear()
}//end clear 清空堆
public void display()
} public static void main(string args)
}
2. 堆排序
package com.jzm.heapmap;
public class heapsort //找到最大的孩子
if(orphant.compareto(heap[largerchildindex])<0)else
}//end while
heap[rootindex] = orphant;
}//end reheap
private static > void swap(t a,int i,int j)
public static> void heapsort(t array,int n)
system.out.println("\n---------------------------");
}swap(array,0,n-1);
for (int lastindex =n-2; lastindex>0 ; lastindex--)//end for
}//end heapsort
public static void main(string args) ;
heapsort(a,a.length);
for (int i = 0; i < a.length; i++)
} }
資料結構(java語言描述) 堆
堆是一棵完全二叉樹,堆的每個父節點的值都大於等於子節點的值。或者 我們用陣列來儲存二叉樹。public class maxheap extends comparable public maxheap public maxheap e arr 返回堆中的元素個數 public int size 返回乙...
資料結構 堆
最大堆 最小堆 堆的定義是 n個元素的序列,當且僅當滿足如下關係時被成為堆 1 ki k2i 且 ki k2i 1 或 2 ki k2i 且 ki k2i 1 i 1,2,n 2 當滿足 1 時,為最小堆,當滿足 2 時,為最大堆。若將此序列對應的一維陣列堪稱是乙個完全二叉樹,則2i和2i 1個節點...
資料結構 堆
資料結構 堆的操作和實現 當應用優先順序佇列或者進行堆排序時,一般利用堆來實現。堆是乙個完全 除最底層 外都是滿的 二叉樹,並滿足如下條件 1 根結點若有子樹,則子樹一定也是堆。2 根結點一定大於 或小於 子結點。因為要求堆必須是完全二叉樹,所以可以用線性的資料結構,比如陣列,來實現堆。利用陣列實現...