主题:[讨论]用C折半查找的问题
在数据结构上看到的一个关于C的算法:折半查找:
int seach-bin(sstable st,keytype key){
low=1;high=st.length;
while(low<=high){
mid=(low+high)/2;
if(EQ(key,st.elem[mid].key) return mid;
else if (LT(key,ST.elem[mid].key)) high=mid-1;
else low=mid+1;
}
return 0;
}
其中,low 和high 分别表示顺序表的头位置和尾位置,mid表示中间位置
EQ和LQ为两个宏,EQ(a,b) 即当a=b时,EQ=1,LQ(a,b)当a<b时,LQ=1;
key为需要查找的关键字!
讨论:
[size=5]当数组为 05 13 19 21 37 56 64 75 80 85 88 92时,关键字为85,请问这个算法是否可以找得到85这个关键字[/size]
int seach-bin(sstable st,keytype key){
low=1;high=st.length;
while(low<=high){
mid=(low+high)/2;
if(EQ(key,st.elem[mid].key) return mid;
else if (LT(key,ST.elem[mid].key)) high=mid-1;
else low=mid+1;
}
return 0;
}
其中,low 和high 分别表示顺序表的头位置和尾位置,mid表示中间位置
EQ和LQ为两个宏,EQ(a,b) 即当a=b时,EQ=1,LQ(a,b)当a<b时,LQ=1;
key为需要查找的关键字!
讨论:
[size=5]当数组为 05 13 19 21 37 56 64 75 80 85 88 92时,关键字为85,请问这个算法是否可以找得到85这个关键字[/size]