问答题 请写一非递归算法,该算法在按值严格递增排序的顺序表A【1…n】中采用折半查找法查找值不小于item的最小元素。若表中存在这样的元素,则算法给出该最小元素在表中的位置,否则,给出信息0。【北京航空航天大学2007年】
【正确答案】正确答案:算法的基本设计思想:采用折半查找法查找等于item的元素,查找到则成功,未查找到则判断查找失败的位置,若不是表尾,则此位置后的元素即为所求,若到表尾则说明查找失败。算法的代码: int Search(SSTable ST,ElemType item){ //在有序表中折半查找值不小于item的最小元素,查找成功返回位置 int low=1,high=ST.1ength,mid=high+1; //mid赋值high+l,防止出现一开始low>high则返回mid+l这种情况 while(10w<=high) { mid:(10w+high)/2; if(item>ST.elem[mid]) low=mid+1; //向后半部分查找 e1Se if(item
【答案解析】