简单算法的问题,请问我这对么?

来源:百度知道 编辑:UC知道 时间:2024/05/24 17:21:29
有元素[15]从大到小排列,用折半法查找该数是第几个元素

代码如下:(请问对不对)
int main()
{

int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1},n,i;
cout<<"请输入你要查找的数:";
cin>>n;
cout<<endl;
for(i=0;i<15;i+2)
if(n==a[i])
cout<<"你要找的数在元素中的第" <<i <<个;
else
for(i=1;i<15;i+1)
if(n==a[i])
cout<<"你要找的数在元素中的第" <<i <<个;
else
cout<<"无此数"<<endl;

return 0;
}

不对
这样折半查找

#include<iostream>
using namespace std;
int main()
{

int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1},n;
cout<<"请输入你要查找的数:";
cin>>n;
cout<<endl;
int mid,low,high,found=0;
low=0;
high=14;
while(low<=high)
{
mid=(low+high)/2;
if(n==a[mid]) {found=1;break;}
else if(n<a[mid]) low=mid+1;
else high=mid-1;
}

if(found)
cout<<"你要找的数在元素中的第" <<mid+1<<"个"<<endl;
else
cout<<"无此数"<<endl;

return 0;
}