使用C ++在未排序的数组中查找floor和ceil。

在这里,我们将看到如何以未排序的数组查找地板和天花板。下限值是小于或等于x的较大元素,上限值是大于x的最小值。如果数组A = [5、6、8、9、6、5、5、6],并且x为7,则下限值为6,上限值为8。

为了解决这个问题,我们将遵循线性搜索方法。我们将遍历数组并跟踪相对于x的两个距离。

  • 元素的最小距离大于或等于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

以上是 使用C ++在未排序的数组中查找floor和ceil。 的全部内容, 来源链接: utcz.com/z/349047.html

回到顶部