在数据处理过程中,是否能在最短时间内查找到所需要的数据是信息从业人员最为关心的问题。所谓查找(Search,或搜索),指的是从数据文件中找出满足某些条件的记录。用以查找的条件称为“键值”,就如同排序所用的键值一样。例如,我们在电话簿中找某人的电话号码,这个人的姓名就成为在电话簿中查找电话号码的键值。
如果要查找的数据已经事先排好序了,就可以使用二分查找法进行查找,这也是分治法的应用。二分查找法是将数据分割成两等份,再比较键值与中间值的大小,如果键值小于中间值,就可以确定要查找的数据在前半段,否则在后半段。如此分割数次,直到找到或确定不存在为止。
例如,已排序的数列为2、3、5、8、9、11、12、16、18,所要查找的值为11,步骤如下:
步骤01 首先与中间值(第5个数值)9比较,如图3-25所示。
图3-25 先和中间值比较
步骤02 因为11>9,所以和后半段的中间值12比较,如图3-26所示。
图3-26 再和后半段的中间值比较
步骤03 因为11<12,所以和后半段的前半段的中间值11比较,如图3-27所示。
图3-27 再和后半段的前半段的中间值比较
步骤04 因为11=11,所以查找完成(找到了)。若不相等,则表示找不到。