C++標準模板庫(STL)中的二分查詢


二分查詢,也稱為對數查詢,是一種搜尋演算法,用於在已排序的陣列中搜索元素。該演算法遞迴地將陣列分成兩半,如果在中間位置找到元素,則返回;否則,繼續呼叫劃分並檢查,直到找到元素。

工作原理

該演算法透過將已排序陣列的中間元素與要搜尋的元素進行比較來工作。

如果搜尋元素**等於**中間元素,則**返回**該元素的索引。

如果搜尋元素**大於**中間元素,則在**左子陣列**中搜索,即從中間元素的下一個元素到陣列末尾的子陣列。

如果搜尋元素**小於**中間元素,則在**右子陣列**中搜索,即從第一個元素到陣列中間元素前一個元素的子陣列。

語法

呼叫標準二分排序時,使用以下語法:

binary_search(start_address , end_address , element)

引數

start_address 是陣列第一個元素的地址。

end_address 是陣列最後一個元素的地址。

element 是要在陣列中查詢的元素。

返回值

如果找到該元素,則返回一個整數,其值等於該元素在陣列中的索引;否則返回 0。

示例

線上演示

#include <algorithm>
#include <iostream>
using namespace std;
void printArray(int a[], int arraysize){
   for (int i = 0; i < arraysize; ++i)
      cout << a[i] << " ";
}
int main(){
   int arr[] = {1 , 5, 9, 7 , 3, 2 , 0 , 4};
   int sizeofarr = sizeof(arr)/sizeof(arr[0]);
   cout<<"The Element of array are :\n";
   printArray(arr , sizeofarr);
   cout<<"\nSorting Elements of array.";
   sort(arr , arr+sizeofarr);
   cout<<"\nSorted array is : ";
   printArray(arr, sizeofarr);
   cout<<"\nElement to be searched is 4";
   if(binary_search(arr , arr+sizeofarr , 4))
      cout<<"\nElement found ";
   else
      cout<<"\nElement not found";
}

輸出

The Element of array are :
1 5 9 7 3 2 0 4
Sorting Elements of array.
Sorted array is : 0 1 2 3 4 5 7 9
Element to be searched is 4

更新於:2020年1月3日

173 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.