漫畫演算法筆記 堆排序

2021-10-10 03:10:01 字數 1275 閱讀 6620

#include

#include

#include

#include

#include

using

namespace std;

//下沉調整

template

<

typename t>

void

downadjust

(vector

&vec,

int parentindex,

int size)

//如果父節點小於任何乙個孩子的值,則直接跳出

if(temp >= vec[childindex]

)break

; vec[parentindex]

= vec[childindex]

; parentindex = childindex;

childindex =

2* childindex +1;

} vec[parentindex]

= temp;

}//堆排序

template

<

typename t>

void

heapsort

(vector

&vec)

std::

copy

(vec.

begin()

, vec.

end(

), std::ostream_iterator

(std::cout,

" "));

cout << endl;

//迴圈刪除棧頂元素,移動集合尾部,調整堆產生新的堆頂

for(

int i = vec.

size()

-1; i >0;

--i )

}int

main

(int argc,

char

** ar**)

;heapsort

(vec)

; std::

copy

(vec.

begin()

, vec.

end(

), std::ostream_iterator<

int>

(std::cout,

" "));

cout << endl;

system

("pause");

return0;

}

演算法筆記 堆排序

堆排序是一種原地的,時間複雜度為 o nlogn 的排序演算法。快速排序的時間複雜度也是 o nlogn 甚至堆排序比快速排序的時間複雜度還要穩定,但是快速排序的效能要比堆排序好。什麼是堆 堆是乙個完全二叉樹。堆上任一節點的值都大於等於它的左右子樹的值,或者小於等於它的左右子樹的值。對於每個節點大於...

演算法筆記 堆排序1 0

郭郭自學筆記 1 堆排序1.0 1.堆是什麼 堆其實就是乙個完全二叉樹 特點 2.堆特性的應用 對於給的一組資料,如上圖 16,14,10,8,7,9,3,2,4,1 從大到小排序。如上圖,乙個大根堆,的根節點,明顯是一組資料的最大值。3.堆排序 c 下次我絕對不寫這麼多話了,直接上 include...

演算法筆記之堆排序

一 對堆排序的相關了解 1 堆排序的執行時間是 o nlogn 2 定義 堆heap是一棵具有下面屬性的二叉樹 1 它是一棵全然二叉樹。2 每乙個結點大於或等於它的隨意乙個孩子。備註 全然二叉樹的定義 除了最後一層沒填滿以及最後一層的葉子都是偏左放置的。其它層都是滿的二叉樹!3 二叉堆有兩種 最大堆...