八大排序演算法之 堆排序(HeapSort)

2021-10-13 07:16:55 字數 734 閱讀 3260

從尾部到首部進行遍歷。

將第0個節點到第i個節點進行大頂堆構建。

不斷的比較第i個節點的父節點與子節點,若父節點大於子節點則進行交換。

進行i–操作繼續交換,直到完成大頂堆構建。

每完成一次大頂堆構建,就將第0個元素與第i個元素進行交換。

public

class

heapsort

;sort

(arr)

; system.out.

println

(arrays.

tostring

(arr));

}static

void

sort

(int

arr)

}/**

* 進行大頂堆構建

* @param arr

* @param i

*/static

void

maxheap

(int

arr,

int i)

// 找出子節點較大的元素,若大於父節點則進行交換

if(arr[parent]

< arr[child])}

}static

void

swap

(int

arr,

int parent,

int child)

}

八大排序演算法 堆排序

排序,分為內部排序和外部排序,內部排序是指將資料記錄在記憶體中進行排序,而外部排序因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存,所以稱之為外部排序,我們這裡講的八大排序全部屬於內部排序。堆排序 heapsort 是指利用堆積樹 堆 這種資料結構所設計的一種排序演算法,它是選...

八大排序之堆排序

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

八大排序之堆排序

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 畫圖,過程清晰。陣列最後插入...