八大排序之堆排序

2021-07-11 20:23:05 字數 572 閱讀 5074

**:

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...