C++の最小ヒープの最大要素
問題の説明
最小のヒープが与えられた場合、その中で最大の要素を見つけます。
例
入力ヒープが-
の場合
その場合、最大要素は55
です。アルゴリズム
- 最小ヒープでは、親ノードはその子よりも少なくなります。したがって、非リーフノードを最大にすることはできないと結論付けることができます。
- リーフノードで最大要素を検索
例
例を見てみましょう-
#include <bits/stdc++.h> using namespace std; int getMaxElement(int *heap, int n) { int maxVal = heap[n / 2]; for (int i = n / 2 + 1; i < n; ++i) { maxVal = max(maxVal, heap[i]); } return maxVal; } int main() { int heap[] = {15, 27, 22, 35, 29, 55, 48}; int n = sizeof(heap) / sizeof(heap[0]); cout << "Maximum element = " << getMaxElement(heap, n) << endl; return 0; }
出力
Maximum element = 55
-
C++の行列の各列の最大要素を検索します
行列があると考えてください。私たちのタスクは、その行列の各列の最大要素を見つけて印刷することです。このタスクは簡単です。列ごとに、maxをリセットし、max要素を見つけて、それを印刷します。理解を深めるためにコードを見てみましょう。 例 #include<iostream> #define MAX 10 using namespace std; void largestInEachCol(int mat[][MAX], int rows, int cols) { for (int i = 0; i < cols; i++) { &nbs
-
最小ヒープを実装するC++プログラム
バイナリヒープは、最小ヒープまたは最大ヒープのいずれかである完全なバイナリツリーです。最大バイナリヒープでは、ルートのキーは、バイナリヒープに存在するすべてのキーの中で最大である必要があります。このプロパティは、バイナリツリーのすべてのノードに対して再帰的に真である必要があります。最小バイナリヒープは最小ヒープに似ています。 アルゴリズム min_heap()の場合: Begin Declare function min_heap(int *a, int m, int n) Declare j, t of the int