#include<iostream>
#define N 8
using namespace std;
int main()
{
float a[N];
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;
}
我写的算法觉得效率不高,哪位路过的朋友能给点建议