用 C++ 在陣列中查詢最接近的數字
假設我們有一個包含 n 個元素的陣列 A,其中元素已排序。我們要找到最接近給定整數的值。該陣列可能包含重複值和負數。因此,如果陣列為 [2, 5, 6, 7, 8, 8, 9],目標數字為 4,則最接近的元素是 5。
我們可以透過遍歷給定陣列並跟蹤絕對差與每個元素的絕對差來解決此問題。最後,返回具有最小絕對差的元素。
範例
#include<iostream>
#include<list>
using namespace std;
int getNearest(int x, int y, int target) {
if (target - x >= y - target)
return y;
else
return x;
}
int getNearestElement(int arr[], int n, int target) {
if (target <= arr[0])
return arr[0];
if (target >= arr[n - 1])
return arr[n - 1];
int left = 0, right = n, mid = 0;
while (left < right) {
mid = (left + right) / 2;
if (arr[mid] == target)
return arr[mid];
if (target < arr[mid]) {
if (mid > 0 && target > arr[mid - 1])
return getNearest(arr[mid - 1], arr[mid], target);
right = mid;
} else {
if (mid < n - 1 && target < arr[mid + 1])
return getNearest(arr[mid], arr[mid + 1], target);
left = mid + 1;
}
}
return arr[mid];
}
int main() {
int arr[] = { 2, 5, 6, 7, 8, 8, 9 };
int n = sizeof(arr) / sizeof(arr[0]);
int target = 4;
cout << "Nearest element of " << target << " is: " << getNearestElement(arr, n, target);
}輸出
Nearest element of 4 is: 5
廣告
資料結構
網路技術
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP