日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二分法(递归非递归)

發布時間:2024/10/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二分法(递归非递归) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

遞歸:

#include <iostream>?? ?
using namespace std;

bool binary(int *arr,int low,int high,int flag,int &temp)
{
?? ?int middle;
?? ?if(low>high)
?? ??? ?return false;
?? ?middle=(low+high)/2;
?? ?if(arr[middle]==flag)?
?? ?{
?? ??? ?temp=middle;
?? ??? ?return true;
?? ?}?
?? ??? ?
?? ?if(arr[middle]<flag) ??
??? ??? ?return binary(arr,middle+1,high,flag,temp);
?? ?else ? ? ? ? ? ? ? ? ??
?? ??? ?return binary(arr,low,high-1,flag,temp);?? ??? ??? ??
}

int main()
{
?? ?while(1)
?? ?{
?? ??? ?int arr[100];
?? ??? ?for(int i=0;i<10;i++)
?? ??? ??? ?cin>>arr[i];
?? ??? ?int temp;
?? ??? ?int abc;
?? ??? ?cout<<"輸入要查找的數:(限定了十個數)"<<endl;
?? ??? ?cin>>abc;
?? ??? ?if( binary(arr,0,9,abc,temp) )
?? ??? ?{
?? ??? ??? ?if(arr[temp]==abc)
?? ??? ??? ??? ?cout<<"二分查找成功"<<endl;?? ?
?? ??? ?} ?? ?
?? ?}
?? ?return 0;
}

?

非遞歸:

#include <iostream> ? ?//二分法非遞歸實現。?
#include <algorithm>
using namespace std;

int arr[100];
int temp;

bool binary(int low,int high,int &ans)
{
? ? while(low<=high)
? ? {
? ? ? ? int middle=(low+high)/2;
? ? ? ? if(arr[middle]==temp)
? ? ? ? {
? ? ? ? ? ? ans=middle;
? ? ? ? ? ? return true; ? ?
? ? ? ? }
? ? ? ? if(arr[middle]<temp)
? ? ? ? ? ? low=middle+1;
? ? ? ? if(arr[middle]>temp)
? ? ? ? ? ? high=middle-1; ? ?
? ? } ? ?
? ? return false;
}?

int main()
{
? ? int n;
? ? cout<<"請輸入n"<<endl;
? ? while(cin>>n)
? ? {
? ? ? ? cout<<"請輸入數組中的數(按照順序輸入)"<<endl;
? ? ? ? for(int i=0;i<n;i++)
? ? ? ? ? ? cin>>arr[i];
? ? ? ? cout<<"請輸入要查找的數據"<<endl;
? ? ? ? cin>>temp; ? ? ? ? ? ? ? ? ? ?
? ? ? ? int ans;
? ? ? ? if(binary(0,n-1,ans))
? ? ? ? {
? ? ? ? ? ? cout<<"要查找的數據在第"<<ans+1<<"個"<<endl;?
? ? ? ? }
? ? ? ? else?
? ? ? ? ? ? cout<<"沒找到。"<<endl;
? ? } ? ??
? ? return 0;
}

總結

以上是生活随笔為你收集整理的二分法(递归非递归)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。