--- tags: Coding --- # 二分搜實作 搜尋之前都要排序過哦 ## 遞迴版 ```cpp= int binary_search(int *a,int f,int e,int target){//陣列 第一個位置 最後位置 目標 if(f<=e){ int mid=(f+e)/2; if(target>a[mid]) return binary_search(a,mid+1,e,target); else if(target<a[mid]) return binary_search(a,f,mid-1,target); else if(target==a[mid]) return mid;//返回在陣列中的位置 } return -1;//沒有就返回-1 } ``` ## while迴圈版 ```cpp= int while_binary_search(int *a,int f,int e,int target){//陣列 第一個位置 最後位置 目標 while(f<=e){ int mid=(f+e)/2; if(target>a[mid]) f=mid+1; else if(target<a[mid]) e=mid-1; else if(target==a[mid]) return mid; } return -1; } ```