c语言数据查找方法,用折半法查找数据

给你改了,不知道符不符合

#include

#define N 15

main()

{

int s[N] = {14,25,36,47,58,69,147,258,369,74,85,96,741,852,963}, i, j, temp, n,a=1;

int top, bottle, mid, sign;

char c;

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

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

if ( s[j] < s[j + 1] )

{

temp = s[j];

s[j] = s[j + 1];

s[j + 1] = temp;

}

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

printf ("%d  ",s[i]);

printf("\n");

while (a)

{

printf ("input a number:");

scanf ("%d",&n);

top = 1;

bottle = N;

sign = 1;

while ( sign == 1 )

{

mid = ( top + bottle ) / 2;

if ( n > s[0] || n < s[N - 1] )

{

printf ("the number is not exist");

sign = 0;

}

/*else if ( n == s[mid] )

{

printf ("%d 's number is s[%d]\n",n,mid);

break;

}

else if ( n > s[mid] )

bottle = mid - 1;

else if ( n < s[mid] )

top = mid + 1;*/

if(n>s[mid])

{ bottle=mid;

mid=(top+bottle)/2;

if(n==s[mid]) { printf ("%d 's number is s[%d]\n",n,mid);

break;}

else if(top==bottle) exit(0);

}

if(n

{     top=mid;

mid=(top+bottle)/2;

if(n==s[mid]) { printf ("%d 's number is s[%d]\n",n,mid);

break;}

else if(top==bottle) exit(0);

}

}

printf ("continue? 1/0:   ");

scanf ("%d",&a);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值