**:
public class heapsort ;
heapsort(num,num.length);
for(int i=0;i=0;--i)
heapadjust(array,i,length);
//從最後乙個元素開始對序列進行調整,不斷的縮小調整的範圍直到第乙個元素
for(i=length-1;i>0;--i)
} private static void heapadjust(int array, int i, int nlength) {
// todo auto-generated method stub
int nchild;
int ntemp;
for(;2*i+1array[nchild])++nchild;
//如果較大的子結點大於父結點那麼把較大的子結點往上移動,替換它的父結點
八大排序之堆排序
public static void heapsort int arr for int i 0 i arr.length i int size arr.length 堆中用size表示長度 swap arr,0,size while size 0 用 3 0 1 5 2 畫圖,過程清晰。陣列最後插入...
八大排序之堆排序
堆排序法 直接選擇排序的改進 將排序碼k1,k2,k3,kn表示成一棵完全二叉樹,然後從第n 2個排序碼開媽篩選,使由該結點組成的子二叉樹符合堆的定義,然後從第n 2 1個排序碼重複剛才操作,直到第乙個排序碼止,這時候,該二叉樹符合堆的定義,初始堆已經建立。接著,可以按如下方法進行堆排序 將堆中第乙...
八大排序 堆排序
堆排序 利用大頂堆 小頂堆 堆頂記錄的是最大關鍵字 最小關鍵字 這一特性,使得每次從無序中選擇最大記錄 最小記錄 變得簡單。其基本思想為 大頂堆 1 將初始待排序關鍵字序列 r1,r2 rn 構建成大頂堆,此堆為初始的無須區 2 將堆頂元素r 1 與最後乙個元素r n 交換,此時得到新的無序區 r1...