数据结构二分查找的问题~

Samerol_Jomior 2013-08-09 11:34:22
这是结构体
typedef struct{
int key;
float info;
}element;
typedef element sqlist[m];
这是二分查找的代码
int BinSearch(sqlist R,int n, int k)
{
int low,high,mid;
low = 0;
high = n-1; //置当前查找区间上、下界的初值

while(low<=high)
{ //当前查找区间R[low…high]非空
mid = (low+high)/2;
if(R[mid].key == k)
return mid;
if(R[mid].key > k)
high = mid-1; //继续在R[low..mid-1]中查找
else
low = mid+1; //继续在R[mid+1..high]中查找
}
return -1; //当low>high时表示查找区间为空,查找失败
}

想要请问一下,在结构体中定义的sqlist[m],用在二分查找中变成了sqlist R,这个是什么意思..R是什么?
...全文
207 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
一根烂笔头 2013-08-09
  • 打赏
  • 举报
回复
Jackie_Zhu 2013-08-09
  • 打赏
  • 举报
回复
是typedef的, sqlist的类型就变成了 element [m]类型 因此 sqlist R 相当于 element R[m]
canshui 2013-08-09
  • 打赏
  • 举报
回复
typedef element sqlist[m]; R 是 element 数组。
图灵狗 2013-08-09
  • 打赏
  • 举报
回复
你应该是抄错了,sqlist R[]这样才合理。
引用 3 楼 u011144614 的回复:
想知道的是结构体用sqlist和sqlist[m]有什么区别吗
Samerol_Jomior 2013-08-09
  • 打赏
  • 举报
回复
想知道的是结构体用sqlist和sqlist[m]有什么区别吗
Samerol_Jomior 2013-08-09
  • 打赏
  • 举报
回复
引用 1 楼 turingo 的回复:
R是函数的参数,在函数内就是这个名称了。 [quote=引用 楼主 u011144614 的回复:] 这是结构体 typedef struct{ int key; float info; }element; typedef element sqlist[m]; 这是二分查找的代码 int BinSearch(sqlist R,int n, int k) { int low,high,mid; low = 0; high = n-1; //置当前查找区间上、下界的初值 while(low<=high) { //当前查找区间R[low…high]非空 mid = (low+high)/2; if(R[mid].key == k) return mid; if(R[mid].key > k) high = mid-1; //继续在R[low..mid-1]中查找 else low = mid+1; //继续在R[mid+1..high]中查找 } return -1; //当low>high时表示查找区间为空,查找失败 } 想要请问一下,在结构体中定义的sqlist[m],用在二分查找中变成了sqlist R,这个是什么意思..R是什么?
[/quote] 我的意思是为什么上面用的sqlist[m],下面定义R用sqlist R..sqlist[m]不是数组么?
图灵狗 2013-08-09
  • 打赏
  • 举报
回复
R是函数的参数,在函数内就是这个名称了。
引用 楼主 u011144614 的回复:
这是结构体 typedef struct{ int key; float info; }element; typedef element sqlist[m]; 这是二分查找的代码 int BinSearch(sqlist R,int n, int k) { int low,high,mid; low = 0; high = n-1; //置当前查找区间上、下界的初值 while(low<=high) { //当前查找区间R[low…high]非空 mid = (low+high)/2; if(R[mid].key == k) return mid; if(R[mid].key > k) high = mid-1; //继续在R[low..mid-1]中查找 else low = mid+1; //继续在R[mid+1..high]中查找 } return -1; //当low>high时表示查找区间为空,查找失败 } 想要请问一下,在结构体中定义的sqlist[m],用在二分查找中变成了sqlist R,这个是什么意思..R是什么?
Jackie_Zhu 2013-08-09
  • 打赏
  • 举报
回复
引用 8 楼 u011144614 的回复:
[quote=引用 6 楼 usingnamespace_std 的回复:] 是typedef的, sqlist的类型就变成了 element [m]类型 因此 sqlist R 相当于 element R[m]
那二分查找不用结构体,直接定义数组是不是也可以?[/quote] 是的,前提是已经根据关键字排序的
canshui 2013-08-09
  • 打赏
  • 举报
回复
引用 8 楼 u011144614 的回复:
[quote=引用 6 楼 usingnamespace_std 的回复:] 是typedef的, sqlist的类型就变成了 element [m]类型 因此 sqlist R 相当于 element R[m]
那二分查找不用结构体,直接定义数组是不是也可以?[/quote] 二分查找只是一种查找策略,跟你用不用结构体没有关系。
Samerol_Jomior 2013-08-09
  • 打赏
  • 举报
回复
引用 6 楼 usingnamespace_std 的回复:
是typedef的, sqlist的类型就变成了 element [m]类型 因此 sqlist R 相当于 element R[m]
那二分查找不用结构体,直接定义数组是不是也可以?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧