Binary search

最後編輯:2016-11-04 建立:2016-11-04 歷史紀錄
  • 陳靖#include<iostream>
  • #include<algorithm>
  • #include<time.h>
  • using namespace std;
  • int l,m,n;
  • int binarysearch(int arr[], int number) {
  • int first=0;
  • int last=n-1;
  • while(first<=last) { //不用遞迴,用迴圈,也很好
  • int mid=(first+last)/2;
  • if (arr[mid]==number)
  • return m;
  • else if(arr[mid]<number)
  • first=mid+1;
  • else if(arr[mid]>number)
  • last=mid-1;
  • }
  • return -1;//沒找到的時候return-1結束迴圈 <---- 是結束函數,返回呼叫函數的地方
  • }
  • 百千.IO
  • int recursive_binarysearch(int arr[], int number)//用遞迴可以用簡單邏輯解決複雜問題
  • {
  • if( n==0 ) return -1;
  • int x=n%2;//陣列長度的奇偶決定後半段的起點
  • n/=2;
  • if( *(arr+n) == m ) return m;
  • if( *(arr+n) > m ) recursive_binarysearch(arr,m);
  • else recursive_binarysearch(arr+n+x,m);
  • }
  • 陳靖int main(){
  • cout<<"你想要有多少數字做選擇: \\n";
  • cin>>n;
  • int arr[n];
  • srand(time(NULL));
  • for(int i=0;i<n;i++)
  • arr[i]=rand()%100;
  • sort(arr,arr+n);
  • for(int i=0;i<n;i++)
  • cout<<arr[i]<<" ";
  • cout<<endl<<"輸入你要找的數字: \\n";
  • cin>>m;
  • if(binarysearch(arr,m)>-1)
  • cout<<"找到你要的數字 "<<m<<" 了"<<endl;
  • else
  • cout<<"很可惜你要找的數字不在裡面!\\n";
  • return 0;
  • }