一个关于“折半算法”的基本问题
题目:
对于长度为18的有序顺序表,若采用折半查找,则查找15个元素的查找次数为( )
答案:4次
但是我却得到了2个答案,恳请热心人帮忙指教。
假如,数字为1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
我用两个方法,但得到了两个方法。
方法1:
步骤1:首先,将数字1和18相加,接着(1+18)/2=9.5
步骤2:然后,观察9和9.5接近,所以 (9+17)/2=13
步骤3:接着,观察14和13.5接近,所以,(13+16)/2=14.5
步骤4:最后,观察是15
结论:4次就查找到了数字15。
方法2:
步骤1:首先,将数字1和18相加,接着(1+18)/2=9.5
步骤2:然后,观察10和9.5接近,所以(10+17)/2=13.5
步骤3:接着,观察14和13.5接近,所以,(14+16)/2=15
结论:3次就查找到了数字15。
我的疑问就是:是“方法1,和方法2”中的步骤2,和9.5比较的数字,一个是9,一个是10,它们都相差
0.5,那么,结论就不同,还是我的方法错误了,恳请热心人帮忙指教,并指导正确的算法,谢谢)