資料結構 堆排序

2021-07-11 11:13:26 字數 1346 閱讀 9236

堆排序(heapsort)是指利用

堆這種資料

結構所設計

的一種排序演算法。堆是乙個近似完全二叉樹的結構,並同時滿足堆性質

:即子結點的鍵值或索引總是小於(或者大於)它的父節點。

#pragma once 

#include#includetemplateclass heap

heap(const t* a, int size)

size_t parent = (size - 2) / 2;

for (int i = (_a.size() - 2) / 2; i >= 0; --i)

}~heap()

{} //堆排序

//將資料從小到大輸出,

void heapsort(t* a,int size) }

void print( size_t size)

cout << endl;

}protected:

void _adjustdown(size_t parent, size_t size)

else

break;

} }protected:

vector_a;

};void test()

; heaphp1(array, sizeof(array) / sizeof(array[0]));

hp1.heapsort(array, sizeof(array) / sizeof(array[0]));

hp1.print(sizeof(array) / sizeof(array[0]));

}

//堆排序

#includeusing namespace std;

#includevoid adjustdown(int* a, size_t size, size_t parent)

if (a[child] > a[parent]) //如果子節點比父節點大,就交換,父節點變為大的

else

}}void heapsort(int* a, size_t size)

for (int i = 0; i < size; ++i) }

void printarray(int* a, int n)

cout << endl;

}void testheapsort()

; int a = ;

heapsort(a, sizeof(a) / sizeof(a[0]));

printarray(a, sizeof(a) / sizeof(a[0]));

}int main()

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