二分查找的一个版本

2014-11-23 23:55:11 · 作者: · 浏览: 11

#include

#include

#define NUM 100

typedef struct node

{

int x;

int y;

}node ;

node global[NUM]={-999};

int count=0;

int find(int left,int right,node x)

{

int mid =(left +right )/2;

if (left==mid )

{

if( x.x==global [right].x)

return right;

else if( x.x==global [left].x)

return left;

else

return -1;

}

else if( x.x > global [ mid ].x )

return find ( mid ,right ,x );

else

return find (left , mid , x);

}

int main()

{

int i=0,j=0;

struct node temp;

for(i=0;i

{

j=i*i;

temp.x=j;

printf(" (%d) ",temp.x);

global[i].x=j;

}

printf("\n");

temp.x=0;

find ( 0,NUM-1,temp);

for(i=0;i

{

temp.x=global[i].x;

printf("result is {%d } \n", find ( 0 , NUM-1 , temp));

}

printf("new\n ");

while ( scanf("%d",&j) && j )

{

temp.x=j;

printf("result is {%d } \n", find ( 0 ,NUM-1 , temp));

}

}

摘自 chenbingchenbing的专栏