1. 程式人生 > 程式設計 >C++實現折半查詢

C++實現折半查詢

本文例項為大家分享了C++實現折半查詢的具體程式碼,供大家參考,具體內容如下

折半查詢

定義:

電腦科學中,折半搜尋(英語:half-interval search),也稱二分搜尋(英語:binary search)、對數搜尋(英語:logarithmic search),是一種在有序陣列中查詢某一特定元素的搜尋演算法。

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

C++實現折半查詢

程式碼:

#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;
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。