Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm tầng và tầng trong một mảng không được sắp xếp bằng C ++.

Ở đây chúng ta sẽ xem cách tìm sàn và trần trong một mảng không được sắp xếp. Giá trị sàn là phần tử lớn hơn nhỏ hơn hoặc bằng x và giá trị trần là giá trị nhỏ nhất lớn hơn x. Nếu mảng A =[5, 6, 8, 9, 6, 5, 5, 6] và x là 7, thì giá trị sàn là 6 và giá trị trần là 8.

Để giải quyết vấn đề này, chúng ta sẽ thực hiện theo cách tiếp cận tìm kiếm tuyến tính. Chúng tôi sẽ duyệt qua mảng và theo dõi hai khoảng cách đối với x.

  • Khoảng cách tối thiểu của phần tử lớn hơn hoặc bằng x
  • Khoảng cách tối thiểu của phần tử nhỏ hơn hoặc bằng x
  • Cuối cùng, một phần tử in với khoảng cách tối thiểu

Ví dụ

#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);
}

Đầu ra

Floor value is 6
Ceil value is 8