Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหา floor และ ceil ในอาร์เรย์ที่ไม่เรียงลำดับโดยใช้ C++


ที่นี่เราจะมาดูวิธีค้นหาพื้นและเพดานในอาร์เรย์ที่ไม่เรียงลำดับ ค่าพื้นเป็นองค์ประกอบที่ใหญ่กว่าซึ่งน้อยกว่าหรือเท่ากับ 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