Binary search
- #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結束迴圈 <---- 是結束函數,返回呼叫函數的地方
- }
-
- 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;
- }