資料結構練習 堆排序

2022-05-06 14:45:09 字數 1306 閱讀 5553

只是把以前的寫的**貼出來而已

#ifndef heap_h

#define heap_h

void heapsort(int* a,int

arraysize);

void buildheap(int* a,int

arraysize);

void shiftup(int* a, int

index);

void shiftdown(int* a,int startindex,int

endindex);

void swap(int& x,int&y);

void printheap(int* a,int

arraysize);

#endif

heap.cpp

#include "

heap.h

"#include

using

std::cout;

using

std::endl;

void heapsort(int* a,int

arraysize)}//

建大根堆

void buildheap(int* a,int

arraysize)

//從最後乙個葉子結點開始,如果比父結點大則往上移

//直至移到根結點

void shiftup(int* a, int

index)

else

break

; }}//

從根結點開始,如果比最大的孩子結點小則往下移

//直至移到最後的葉子結點

void shiftdown(int* a,int startindex,int

endindex)

else

break

; }

}void printheap(int* a,int

arraysize)

void swap(int& x,int&y)

main.cpp

#include #include 

"heap.h

"int

main()

;

for(int i=0;i<10;i++)

a[i]=rand();

heapsort(a,

10);

printheap(a,

10);

system(

"pause");

return0;

}

資料結構 堆排序 堆排序 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...

資料結構 堆排序

1 堆排序的時間複雜度與歸併排序相同,o nlogn 堆排序的優勢在與他只需要固定數量的額外空間,堆排序要比空間複雜性為o n 的歸併排序稍微慢一些,但是比空間複雜性為o 1 的歸併排序要快。2 對序列 26,5,77,1,61,11,59,15,48,19 進行堆排序 過程 調整最大堆 二叉堆 v...