经典二分查找问题

xiaoxiao2021-02-28  103

/* 问题描述:在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-1 来源:LintCode 日期:2017-6-25 作者:syt

*/

#include <iostream> #include <vector> using namespace std; class ClassTwoSearch{ public: /** * @param A an integer array sorted in ascending order * @param target an integer * @return an integer */ int findPosition1(vector<int>& A, int target) { // Write your code here int res = -1; for (int i = 0; i < A.size(); i++) { if (A[i] == target) { res = i; break; } } return res; } int findPosition2(vector<int>& A, int target) { // Write your code here int res = -1; if (A.size() == 0) return res; int begin = 0, end = A.size() - 1; int mid = (begin + end) / 2; while (begin < end && A[mid] != target) { if (A[mid] < target) begin = mid + 1; if (A[mid] > target) end = mid - 1; mid = (begin + end) / 2; } if (A[mid] != target) res = -1; else res = mid; return res; } };

转载请注明原文地址: https://www.6miu.com/read-51931.html

最新回复(0)