您好,登錄后才能下訂單哦!
使用C++實現折半查找的方法?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
定義:
計算機科學中,折半搜索(英語:half-interval search),也稱二分搜索(英語:binary search)、對數搜索(英語:logarithmic search),是一種在有序數組中查找某一特定元素的搜索算法。
搜索過程從數組的中間元素開始,如果中間元素正好是要查找的元素,則搜索過程結束;如果某一特定元素大于或者小于中間元素,則在數組大于或小于中間元素的那一半中查找,而且跟開始一樣從中間元素開始比較。如果在某一步驟數組為空,則代表找不到。這種搜索算法每一次比較都使搜索范圍縮小一半。
代碼:
#include <iostream> using namespace std; int Search_Bin(int A[],int key,int n){ int low = 0; int high = n-1; int mid; while(low<=high){ mid=(low+high)/2; if(key==A[mid]){ return mid; } else if(key<A[mid]){ high=mid-1; } else{ low=mid+1; } } return 0; } void sort(int A[],int n){ //冒泡法排序 for(int i=0;i<n-1;i++){ for(int j=0;j<n-i-1;j++){ if(A[j]>A[j+1]){ int t=A[j]; A[j]=A[j+1]; A[j+1]=t; } } } } void Print(int A[],int n){ for(int i=0;i<n;i++){ cout<<A[i]<<" "; } cout<<endl; } int main() { int A[10]={2,1,4,6,7,3,8,0,5,9}; Print(A,10); sort(A,10); Print(A,10); cout<<Search_Bin(A,7,10)+1; return 0; }
關于使用C++實現折半查找的方法問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。