排序 堆排序(Heap Sortd)

2021-07-10 03:44:59 字數 863 閱讀 1043

堆排序:是指利用堆這種資料結構所設計的排序演算法,可以利用陣列的特點快速定位指定索引的元素,堆分為大根堆和小根堆,是完全二叉樹。

大根堆:每個節點上的值都不大於它父節點的值

小根堆:每個節點上的值都不小於它父節點的值

完全二叉樹:除最後一層外每一層上的節點數都達到最大值,在最後一層上只缺少最右邊若干個節點。

例項:

#include "stdafx.h"

#include using namespace std;

//堆調整

templatevoid heapadjust(t data, int i, int arrsize)

if (rchiled <= arrsize && data[rchiled] > data[max])

if (max != i) }

//建立堆

templatevoid builedheap(t data, int arrsize)

}//堆排序

templatevoid heapsort(t data, int arrsiz)

}templatevoid sprint(t data, int n)

cout << endl;

}int _tmain(int argc, _tchar* argv)

; int n = sizeof(data) / sizeof(int) -1; //陣列從1開始

heapsort(data, n);

sprint(data, n);

return 0;

}

堆排序 堆排序優化 索引堆排序

堆排序 堆排序優化 索引堆排序 注 堆排序 索引堆排序 都是不穩定的排序。注 索引最大堆排序有誤!有沒有大神可以指點一二?1 堆 所有元素 都從索引0開始 父親結點索引 i 左孩子結點索引 2i 1 右孩子結點索引 2i 2 左後乙個非葉子結點索引 n 1 2 用於構建堆,從最後乙個非葉子結點索引開...

堆排序 堆排序優化 索引堆排序

堆排序 堆排序優化 索引堆排序 注 堆排序 索引堆排序 都是不穩定的排序。注 索引最大堆排序有誤!有沒有大神可以指點一二?1 堆 所有元素 都從索引0開始 父親結點索引 i 左孩子結點索引 2i 1 右孩子結點索引 2i 2 左後乙個非葉子結點索引 n 1 2 用於構建堆,從最後乙個非葉子結點索引開...

堆排序 模擬堆排序

838.堆排序 輸入乙個長度為n的整數數列,從小到大輸出前m小的數。輸入格式 第一行包含整數n和m。第二行包含n個整數,表示整數數列。輸出格式 共一行,包含m個整數,表示整數數列中前m小的數。資料範圍 1 m n 1051 m n 105,1 數列中元素 1091 數列中元素 109 輸入樣例 5 ...