帮我看看很头疼
#include <iostream>#define N 5
using namespace std;
int i;
void NUL(int a[],int key)//key在数组中为空
{
int *p,x;
*p=a[N];
for(i=1;i<=N+1;i++)
{*(p+i)=a[i-1];a[0]=key;x=0;}
}
void right(int x,int key,int a[])//key大于中间值
{
for(i=x;i<=N;i++)
{
if(key==a[i])
{x=a[i];a[i]=key;}
else NUL(a,key);
}
}
void left(int x,int key,int a[])//key小于中间值
{
for(i=x;i>=1;i--)
{
if(key==a[i])
{x=a[i];a[i]=key;}
else NUL(a,key);
}
}
void main()
{
int H,T,key,a[N],x;
H=1;T=N;
cout<<"请输入一个顺序的数组从小到大:"<<endl;
cin>>a[N]; cout<<endl;
cout<<"输入KEY:"<<endl;
cin>>key; cout<<endl;
i=(H+T)/2;
if(key==a[i])
{x=a[i];a[i]=key;}
else if(key>a[i])
{H=i+1;i=(H+T)/2;right(i,key,a);}
else
{T=i-1;i=(H+T)/2;left(i,key,a);}
cout<<"a[N]="<<a[N]<<"x="<<x<<endl;
}输入顺序的数组 插如KEY 如果数组中有KEY 则替换 若无则插入a[0]
[[it] 本帖最后由 走一圈 于 2008-6-4 19:11 编辑 [/it]]