首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

二分查找,代码已写好了,无异常,运行时报内存异常

2012-03-03 
二分查找,代码已写好了,无错误,运行时报内存错误二分查找,代码已写好了,无错误,运行时报内存错误题是在1,2

二分查找,代码已写好了,无错误,运行时报内存错误
二分查找,代码已写好了,无错误,运行时报内存错误

题是 在1,2,3,4,5,6,7,8,9,10中找9的位置

代码如下:


#include<stdio.h>
#define MAXL 100
typedef int KeyType;
typedef char InfoType[10];
typedef struct
{
KeyType key;
InfoType data;
}NodeType;
typedef NodeType SeqList[MAXL];
int BinSearch(SeqList R,int n,KeyType k)
{
int low=0,high=n-1,mid,count=0;
while(low<=high)
{
mid=(low+high)/2;
printf("第%n次查找:在[%d,%d]中查找到元素R[%d]:%d\n",++count,low,high,mid,R[mid].key);
if(R[mid].key==k)
return mid;
if(R[mid].key>k)
high=mid-1;
else
low=mid+1;
}
return -1;
}
void main()
{
SeqList R;
KeyType k=9;
int a[]={1,2,3,4,5,6,7,8,9,10},i,n=10;
for(i=0;i<n;i++)
R[i].key=a[i];  
printf("\n");
if((i=BinSearch(R,n,k))!=-1)
printf("\n元素%d的位置是%d\n",k,i);
else
printf("\n元素%d不在表中\n",k);
printf("\n");
}


[解决办法]
将printf("第%n次查找:在[%d,%d]中查找到元素R[%d]:%d\n",++count,low,high,mid,R[mid].key);
改为printf("第%d次查找:在[%d,%d]中查找到元素R[%d]:%d\n",++count,low,high,mid,R[mid].key);

热点排行