演算法筆記-問題 A: 找x
阿新 • • 發佈:2021-01-15
技術標籤:二分法
問題 A: 找x
題目描述
輸入一個數n,然後輸入n個數值各不相同,再輸入一個值x,輸出這個值在這個陣列中的下標(從0開始,若不在陣列中則輸出-1)。
輸入
測試資料有多組,輸入n(1<=n<=200),接著輸入n個數,然後輸入x。
輸出
對於每組輸入,請輸出結果。
樣例輸入Copy
4 1 2 3 4 3
樣例輸出 Copy
2
程式碼:
#include <bits/stdc++.h> using namespace std; int binareSearch(vector<int> &nums, int low, int high, int x){ while(low <= high){ int mid = (low + high) / 2; if(nums[mid] == x) return mid; else if(nums[mid] < x) low = mid + 1; else high = mid - 1; } return -1; } int main() { int n; while(scanf("%d", &n)!=EOF){ vector<int> nums; for(int i=0; i<n; i++){ int a; scanf("%d", &a); nums.push_back(a); } int x; scanf("%d", &x); int low = 0, high = nums.size()-1, mid; printf("%d\n", binareSearch(nums, low, high, x)); } return 0; }