1. 程式人生 > >[Algorithm] Binary Search

[Algorithm] Binary Search

搜索 arc 查找 二分搜索 復雜 有序數組 數組 二分搜索算法 pre

二分搜索定義

二分搜索算法是一種在有序數組中查找某一特定元素的搜索算法。搜索過程中從數組的中間元素開始,如果中間元素正好是要查找的元素,則搜索過程結束;如果某一特定元素大於或小於中間元素,則在數組大於或小於中間元素的那一半中查找,而且跟開始一樣從中間元素開始比較,如果在某一步驟數組為空,則代表找不到。這種搜索算法每一次比較都使搜索範圍縮小一半。

復雜度分析

最壞時間復雜度O(logn)

最好時間復雜度O(1)

平均時間復雜度O(logn)

空間復雜度:叠代O(1)、遞歸O(logn)(尾遞歸、可改寫成循環)。

基本算法

int binary_search(vector<int>& nums, int
target, int left, int right) { while (left <= right) { int mid = left + (right - left) / 2; if (nums[mid] < target) left = mid + 1; else if (nums[mid] > target) right = mid - 1; else return mid; } return -1;
}

[Algorithm] Binary Search