使用 C++ 在無序陣列中查詢 floor 和 ceil。
這裡我們將介紹如何在一個無序陣列中查詢 floor 和 ceiling。floor 值為小於或等於 x 的較大元素,而 ceiling 值為大於 x 的最小元素。如果陣列 A = [5, 6, 8, 9, 6, 5, 5, 6],並且 x 是 7,則 floor 值為 6,ceiling 值為 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP