C++實現折半查詢
阿新 • • 發佈:2020-11-02
本文例項為大家分享了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,5,9}; Print(A,10); sort(A,10); Print(A,10); cout<<Search_Bin(A,10)+1; return 0; }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。