C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++の最小ヒープの最大要素


問題の説明

最小のヒープが与えられた場合、その中で最大の要素を見つけます。

入力ヒープが-

の場合

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

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

  2. 最小ヒープを実装するC++プログラム

    バイナリヒープは、最小ヒープまたは最大ヒープのいずれかである完全なバイナリツリーです。最大バイナリヒープでは、ルートのキーは、バイナリヒープに存在するすべてのキーの中で最大である必要があります。このプロパティは、バイナリツリーのすべてのノードに対して再帰的に真である必要があります。最小バイナリヒープは最小ヒープに似ています。 アルゴリズム min_heap()の場合: Begin    Declare function min_heap(int *a, int m, int n)       Declare j, t of the int