读书人

急一段短的代码 C语言 二分法查找bins

发布时间: 2012-05-28 17:59:54 作者: rapoo

急!一段短的代码 C语言 二分法查找binsearch(T,k),为什么编译通过,却无法运行。
#include<stdio.h>

int i,j;
struct seqlist
{
int key;
}T[10];

void arrangement()
{
int w,u,t;
for(w=1;w<=9;w++)
T[w].key=R[w].key;
for(w=1;w<=9;w++)
for(u=1;u<=9-w;u++)
if(T[u].key>T[u+1].key)
{
t=T[u].key;
T[u].key=T[u+1].key;
T[u+1].key=t;
}
//for(w=1;w<=9;w++)
//printf("%d",T[w]);
}

int binsearch(seqlist T[],int k)
{
int low=1,high=9,mid;
while(low<=high)
{
mid=(low+high)/2;
if(T[mid].key==k)
return mid;
if(T[mid].key>k)
high=mid-1;
else
low=mid+1;
}
return 0;
}

main()
{
int ,k,t;
printf("请任意输入9个数:\n");
for(int j=1;j!='\n';j++)
scanf("%d",&R[j].key);

arrangement();
printf("请输入你要查找的数:");
scanf("%d",k);
t=binsearch(T,k);
if(t==0)
printf("你所查找的数不存在。\n");
else
printf("你所查找的数的位置是:%d\n",t);
}

[解决办法]
数组的基是0的
冒泡排序还是要再练一下
加断点,单步调试
[解决办法]
能通过编译?
我感觉小问题比较多

首先是这个没定义:struct seqlist R[10]
再者这个int ,k,t;(可能是你粘贴的时候有问题了)?
输入要查找的数的时候scanf("%d",k);忘了带取地址符号。


读书人网 >C语言

热点推荐