问题 填空题

阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。 [说明] 已知r[1...n]是n个记录的递增有序表,用折半查找法查找关键字为k的记录。若查找失败,则输出“failure",函数返回值为0;否则输出“success”,函数返回值为该记录的序号值。 [C函数] int binary search(struct recordtype r[],int n,keytype k) { intmid,low=1,hig=n; while(low<=hig){ mid= (1) ; if(k<r[mid].key) (2) ; else if(k==r[mid].key){ printf("succesS\n"); (3) ; } else (4) ; } printf("failure\n"); (5) ; }

答案

参考答案:(low+hig)/2 (2) hig=mid-1 (3) returnmid (4) low=mid+1 (5) return 0

解析: 折半查找法也就是二分法:初始查找区间的下界为1,上界为len,查找区间的中界为k=(下界+上界)/2。所以(1)应填“(low+hig)/2”。中界对应的元素与要查找的关键字比较。当k<r[mid].key时,(2)填“hig=mid-1”;当k==r[mid].key时,(3)填“return mid”;当k>r[mid].key时,(4)填“low=mid+1”。如果low>hig时循环终止时,仍未找到需查找的关键字,那么根据题意返回0,即空(5)填“return 0”。

填空题
多项选择题