經典演算法之堆排序

2021-09-17 07:25:23 字數 576 閱讀 3999

以堆的方式去排序,使最大值位於根節點,之後就縮小尺寸,調整位置。時間複雜度o(n logn),不是很穩定

1.建立乙個堆

2.把堆首最大值和堆尾互換位置

3.縮小堆尺寸,調整位置

4.重複…直至堆尺寸為1

private

int[

]heapsort

(int

source)

return arr;

}

private

void

buildmaxheap

(int

arr,

int len)

}

private

void

heapify

(int

arr,

int i,

int len)

if(right < len && arr[right]

> arr[largest])if

(largest != i)

}

經典演算法之堆排序

author s email wardseptember gmail.com date 2017.12.5 堆排序 堆是一種資料結構,可以把堆看成一棵完全二叉樹,這棵樹滿足 任何乙個非葉子 結點的值都不大於 或不小於 其左右孩子結點的值。若父親大 孩子小,則這樣的堆 叫做大頂推 若父親小 孩子大,則...

經典排序演算法之堆排序

堆排序是一種選擇排序,是不穩定的排序方法。特點 在排序過程中,將排序陣列看成是一棵完全二叉樹儲存結構,利用完全二叉樹中父節點和孩子節點之間的內在關係,在當前無序區中選擇關鍵字最大 最小 的記錄。基本思想 堆分大根堆和小根堆,大根堆是父節點比所有子節點都大,小根堆是父節點比所有子節點都小。下面以大根堆...

經典排序演算法之堆排序

經典排序演算法之堆排序 若以公升序排序說明,把陣列轉換成最大堆積 max heap heap 這是一種滿足最大堆積性質 max heap property 的二叉樹 對於除了根之外的每個節點i,a parent i a i 重複從最大堆積取出數值最大的結點 把根結點和最後乙個結點交換,把交換後的最後...