堆排序,資料結構c c

2021-10-09 15:21:22 字數 741 閱讀 1254

堆排序聽著和圖有關係,但是其實只是引用樹的知識,也可以理解為把陣列理解為乙個滿二叉樹(說法有問題,應該是左邊滿的二叉樹)

這樣就可以有這樣的乙個定義就是n節點的子節點是2n+1和2n+2兩個節點。

以公升序為例

直接貼出源**

#include

using namespace std;

void

change

(int arr,

int s,

int e)

//這個函式用於維護堆,使得每一次交換之後都會使得0是最大點}}

void

heap_sort

(int arr,

int e)

for(

int i = e -

1; i >

0; i--

)//找出最大點然後放到最後面去,然後維護陣列

}int

main()

;int len =

(int

)sizeof

(arr)

/sizeof

(*arr)

;heap_sort

(arr, len)

;for

(int i =

0; i < len; i++

) cout << arr[i]

<<

' ';

return0;

}

堆排序 資料結構

堆排序前不久,我們資料結構剛剛學習到,堆排序。個人覺得堆排序比較好,因為比較穩定的時間複雜度。n logn 時間複雜度。如果想要學會堆排序,需要知道,二叉樹。堆就和二叉樹長的一模一樣。下面說說堆排序 堆排序的思想就是用到堆的特點,大頂堆,小頂堆,簡單說,大頂堆就是 這一棵完全二叉樹的任意乙個節點都滿...

資料結構 堆排序 堆排序 Heap Sort

堆排序是一種選擇排序,其時間複雜度為o nlogn 堆的定義 n個元素的序列當且僅當滿足下列關係之一時,稱之為堆。情形1 ki k2i 且ki k2i 1 最小化堆或小頂堆 情形2 ki k2i 且ki k2i 1 最大化堆或大頂堆 其中i 1,2,n 2向下取整 若將和此序列對應的一維陣列 即以一...

資料結構 堆排序

include include void maxheapify int a,int length,int i void buildmaxheapify int a,int length void heapsort int a,int length void main void printf heap...