二分搜尋演算法

2022-01-19 02:13:37 字數 1769 閱讀 4373

目錄**實現

相關題目

在電腦科學中,二分搜尋(英語:binary search),也稱折半搜尋(英語:half-interval search)、對數搜尋(英語:logarithmic search),是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程結束;如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜尋範圍縮小一半。

二分搜尋在最壞情況下的複雜度是對數時間,進行o(logn)次比較操作,n在此處是陣列的元素數量。最好情況下o(1).

如果迭代實現二分搜尋則空間複雜度為o(1),如果遞迴實現空間複雜度為o(logn)。無論對任何大小的輸入資料,演算法使用的空間都是一樣的。除非輸入資料數量很少,否則二分搜尋比線性搜尋更快,但陣列必須事先被排序。儘管特定的、為了快速搜尋而設計的資料結構更有效(比如雜湊表),二分搜尋應用面更廣。

#include#includeusing namespace std;

int main()

; int target = 0;

int left = 0,right = 4;

int ans = -1;

printf("請輸入target:");

scanf("%d",&target);

while(left <= right)

else if(nums[mid] > target)

else if(nums[mid] < target)

}printf("%d",ans);

return 0;

}

注意:結束條件是left <= right

int binarysearch(vector& nums,int target)

if(left >= 0 && left < nums.size() && nums[left] == target) ret.push_back(left);

return -1;

}

int binarysearch(vector& nums,int target)

if(right >= 0 && right < nums.size() && nums[right] == target) ret.push_back(right);

return -1;

}

int binarysearch(vector& nums,int target)

return right;

}

int binarysearch(vector& nums,int target)

return right;

}

int binarysearch(vector& nums,int target)

return left;

}

int binarysearch(vector& nums,int target)

return left;

}

二分搜尋演算法

今天我勉強搞懂了二分查詢演算法,我覺得很有收穫,這是個不錯的演算法,希望還不知道 不懂二分演算法的朋友能看看!二分查詢 二分查詢的前提是陣列一定是有序的 傳入乙個陣列 t 傳入乙個查詢元素 t key 返回查詢結果 class myutil else if key.compareto x mid 0...

二分搜尋演算法

在電腦科學中,二分搜尋 英語 binary search 也稱折半搜尋 英語 half interval search 對數搜尋 英語 logarithmic search 是一 種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程結束...

二分搜尋演算法

1.x y 2與x y x 2區別 運算子 取整朝零方向取整,5 2 2,5 2 2 用x y x 2好處是確保分界點總是靠近區間起點 2.基本二分查詢的實現方法 int bsearch int a,int x,int y,int v return 1 3.設lower bound和upper bo...