Binary Search
This is a searching algorithm performed on sorted arrays. As it divides the entire array into half in every iteration, the runtime is O(logn).
int search(vector<int>& nums, int target) {
int left = 0;
int right = nums.size() - 1;
while (left <= right) {
int middle = (left + right) / 2;
if (nums[middle] == target) return middle;
else if (nums[middle] < target) {
left = middle + 1;
}
else {
right = middle - 1;
}
}
return -1;
}