# 704. Binary Search

By [Vincentkovsky](https://paragraph.com/@wenzheng) · 2021-12-31

---

Given an array of integers nums which is sorted in ascending order, and an integer target, write a function to search target in nums. If target exists, then return its index. Otherwise, return -1.

You must write an algorithm with O(log n) runtime complexity.

Example 1:

Input: nums = \[-1,0,3,5,9,12\], target = 9 Output: 4 Explanation: 9 exists in nums and its index is 4 Example 2:

Input: nums = \[-1,0,3,5,9,12\], target = 2 Output: -1 Explanation: 2 does not exist in nums so return -1

Constraints:

1 <= nums.length <= 104 -104 < nums\[i\], target < 104 All the integers in nums are unique. nums is sorted in ascending order.

来源：力扣（LeetCode） 链接：[https://leetcode-cn.com/problems/binary-search](https://leetcode-cn.com/problems/binary-search) 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

    class Solution {
        public int search(int[] nums, int target) {
            int head=0;
            int tail=nums.length-1;
            while(true){
                if(head>tail){
                    return -1;
                }
                int mid=(head+tail)/2;
                if(target==nums[mid]){
                    return mid;
                }else if(target<nums[mid]){
                    tail=mid-1;
                }else{
                    head=mid+1;
                }
            }
        }
    }

---

*Originally published on [Vincentkovsky](https://paragraph.com/@wenzheng/704-binary-search)*
