c语言折半查找算法非递归算法,急求大神!要求为二分法查找的非递归算法设计主函数,完善算法并运行验证,代码写了一半不知怎么继续...

急求大神!要求为二分法查找的非递归算法设计主函数,完善算法并运行验证,代码写了一半不知怎么继续0

用C语言写的,我的设想是主函数由用户输入表,然后验证表是否是有序数列,如果有序就让用户输入查找的数据,引用二分法的函数进行查找,如果无序就先按大小顺序排列后再进行查找,然后根据返回值大小判断查找是否成功。 验证表是否有序我已经写了,无序的排序那块我有点晕,然后根据返回值判断查找是否成功那块也就没写了。我编译了一下没有完成的代码,机器说有一个错误,但是查看组建栏发现有好长一串“error”= =求大神帮忙补充下代码顺带看下那个编译出的错误是怎么回事行么? 下面是我写的代码:#define LIST_SIZE 20#include

#include "malloc.h"

typedef struct{ KeyType key;

OtherType other_data;

}RecordType;

typedef struct{ RecordType r[LIST_SIZE+1];

int length;

}RecordList;

int BinSrch(RecordList *L,KeyType k){ int low=0;

int i=0;

high=L->length-1;

while(low<=high){

mid=(low+high)/2;

if(k==L->r[mid].key)

{

i=mid;

break;

}

else

if(kr[mid].key)

high=mid-1;

else

low=mid+1;

}

return(i);

}

void main(){

int BinSrch(RecordList *L,KeyType k);

int i;

int a;

int num;

//

//

//

L=malloc(sizeof(RecordList));//申请空间

printf("Please input the list:\n");

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

scanf("%d",&L->r[i]);//输入表

/*验证表是否有序排列,a=1,-1,0时为有序排列,a=2时需要对表进行排序*/

if(L->r[1]r[2]) {

for(i=2;i<21;i++)

{

if(L->r[i]r[i+1])

i++;

}

a=1;

}

else

{

if(L->r[1]>L->r[2])

{

for(i=2;i<21;i++)

{

if(L->r[i]r[i+1])

i++;

}

a=-1;

}

else

{

if(L->r[i]==L->r[i+1])

a=0;

else

a=2;

}

}

/*判断是否是有序,并排序*/ if(a==2)//表无序,先排序

{

}

else//表有序

{

printf("Please input the key-number:");

scanf("%d",k);

num=BinSrch(L,k);

printf("Your key-number is the NO.%d in this list.\n",num);

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值