堆排序 題解

2021-07-10 21:40:22 字數 747 閱讀 4382

time limit: 1000ms   memory limit: 32678k  有疑問?點這裡^_^

給你n(n<=100)個數,請你按照從小到大的順序輸出。

輸入資料第一行是乙個正整數n,第二行有n個整數。

輸出一行,從小到大輸出這n個數,中間用空格隔開。

51 4 3 2 5

1 2 3 4 5

思路:堆實際上是一棵完全二叉樹,堆又分為大頂堆和小頂堆,小頂堆滿足性質其任何一非葉節點不大於其左右孩子節點的關鍵字。大頂堆則相反,即任何一非葉節點不小於其左右孩子節點的關鍵字。利用大頂堆(小頂堆)堆頂記錄的是最大關鍵字(最小關鍵字)這一特性,每次從無序中選擇最大記錄(最小記錄),到最後即得到有序陣列

**:#include

#include

using namespace std;

int len,large,n;

int heapify(int a,int i)

if(large!=i)

return 0;

}int build(int a)

}int heapsort(int a)

return 0;

}int main()

len=n;

heapsort(a);

for(i=1;i<=n;i++)

//cout << "hello world!" << endl;

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 ...