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

C ++を使用して、ソートされていない配列で床と天井を検索します。


ここでは、並べ替えられていない配列で床と天井を見つける方法を説明します。床の値はx以下の大きい要素であり、天井の値はxより大きい最小値です。配列A=[5、6、8、9、6、5、5、6]で、xが7の場合、フロア値は6、シーリング値は8です。

この問題を解決するために、線形探索アプローチに従います。配列をトラバースし、xに関して2つの距離を追跡します。

  • x以上の要素の最小距離
  • x以下の要素の最小距離
  • 最後に、最小距離の印刷要素

#include<iostream>
using namespace std;
void floorCeilingPair(int arr[], int n, int x) {
   int floor_index, ceiling_index;
   int floor_dist = INT_MAX, ceil_dist = INT_MAX;
   for (int i=0; i<n; i++) {
      if (arr[i] >= x && ceil_dist > (arr[i] - x)) {
         ceiling_index = i;
         ceil_dist = arr[i] - x;
      }
      if (arr[i] <= x && floor_dist > (x - arr[i])) {
            floor_index = i;
            floor_dist = x - arr[i];
      }
   }
   if (floor_dist == INT_MAX)
      cout << "Floor not found" << endl;
   else
      cout << "Floor value is " << arr[floor_index] << endl;
   if (ceil_dist == INT_MAX)
      cout << "Ceiling not found" << endl;
   else
      cout << "Ceil value is " << arr[ceiling_index] << endl;
}
int main() {
   int arr[] = {5, 6, 8, 9, 6, 5, 5, 6};
   int n = sizeof(arr)/sizeof(int);
   int x = 7;
   floorCeilingPair(arr, n, x);
}

出力

Floor value is 6
Ceil value is 8

  1. C++のBSTからの床と天井

    ここでは、BSTから床と天井の値を見つける方法を説明します。たとえば、空きノードがBSTに配置されているメモリ管理システムを作成する場合です。入力リクエストに最適なものを見つけます。キー値よりも大きい最小のデータでツリーを下に移動するとします。3つのケースが考えられます。 ルートが鍵です。その場合、ルート値は上限値です ルートデータ<キーの場合、上限値は左側のサブツリーにないため、右側のサブツリーに進み、問題のあるドメインを減らします キーの場合、上限値は右側のサブツリーにある可能性があり、左側のサブツリーにキーよりも大きいデータを持つノードが見つかる可能性があります。そのような要素が存在し

  2. C++の天井関数と床関数

    天井関数 ceil関数は、その値以上の可能な限り最小の整数値を返します。この関数は、C++言語の「cmath」ヘッダーファイルで宣言されています。セル値が計算されるのは単一の値です。変数のデータ型は、double / float /longdoubleのみである必要があります。 これがC++言語でのceil関数の構文です double ceil(double x); float ceil(float x); これがC++言語のceil関数の例です 例 #include <iostream> #include <cmath> using namespace std;