发布网友 发布时间:2024-10-21 17:49
共1个回答
热心网友 时间:5分钟前
我的观点:
第一个空格填写:table.m_pElem[0]
解释:查表条件非常诡异for(int i=table.m_nLength; table.m_pElem[i] != key; i--);,试想如果表格中不存在key元素,那么这就是一个死循环,为了保证程序不死循环,只能预先存储一个key元素到一个没有用的位置上去,由本题给出的int i=table.m_nLength我们可以知道存储模式为1~m_nLength,那么很自然的我们就可以知道table.m_pElem[0]是留给我们防止越界用的位置了。
第二个空格填写: i
解释:返回元素key所在的位置,i=0没找到,其他情况找到了,并返回第一个key所在的位置。
注意:第一个search是有问题的,for循环后边的“;”实际上扼杀了第二个天空的可能性,楼主是不是贴错了,请确认一下。
第三个空格填写:low <= high
解释:这个地方用来片段二分查找是否要继续的条件,所以纠结的问题应该不是<,而是是否写=,那么用极端情况考虑,如果数组只有1个元素,我们难道不查找了?所以写这个符号是对的。
第四个空格填写:key
解释:这个地方我真的不知道怎么解释了
第五个空格填写:mid - 1
解释:如果中位数还是太大,那就想[low,mid-1]区间找
第六个空格填写:mid + 1
解释:如果中位数还是太小,那就想[mid+1,high]区间找