您的位置:首页 > 其它

给出一个实数集合和一个实数,怎样判断集合中是否存在两个和等于该实数的元素

2011-08-19 23:40 821 查看
#include<iostream>

#define N 8

using namespace std;

int main()

{

float a
;

int i,j,mid,left,right,temp,temp1;

for(i=0;i<N;i++)

cin>>a[i];

for(i=1;i<N;i++)

{

temp=a[i];

left=0;

right=i-1;

while(left<=right)

{

mid=(left+right)/2;

if(temp<a[mid])

{

right=mid-1;

}

else

{

left=mid+1;

}

}

for(j=i-1;j>=left;j--)

{

a[j+1]=a[j];

}

if(left!=i)

a[left]=temp;

}

for(i=0;i<N;i++)

cout<<a[i]<<" ";

cout<<"请输入待判断的数:";

cin>>temp1;

i=0;

j=N-1;

while(i<j)

{

if(a[i]+a[j]>temp1)

j--;

else if(a[i]+a[j]<temp1)

i++;

else

{

cout<<"找到了";

cout<<a[i]<<" "<<a[j];

break;

}

}

if(i==j)

{

cout<<"未找到";

}

return 0;

}

我写的算法觉得效率不高,哪位路过的朋友能给点建议
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐