一、算法思想
1.折半查找又称“二分查找”,仅适用于有序的顺序表。
在数组中,使用两个指针,low指针指向头元素和high指向尾元素。再用mid指针指向(low+high)/2的位置,然后对比该元素和查找元素的大小,如果查找元素大于mid元素,则可以将low指针指向mid+1的位置(如果小于则将high指针指向mid-1的位置)。再次将(low+high)/2的位置与查找元素做对比,重复以上步骤,当low指向位置与high指向位置相同时,则查找成功,当low指针跑到high指针右边时,或high指针跑到low指针左边时,则查找失败。
二、算法实现(升序)
使用while循环,检查mid位置元素与查找元素是否相等,如果相等,则返回所在位置,对于或小于根据上述方法进行再次查找。
(折半查找不适用于链表)
三、查找判定树
1.查找判定树的构造
折半查找的判定树一定是平衡二叉树,元素个数为n的树高H=[log2^(n+1)]。
判定树结点关键字: 左<中<右,满足二叉排序树的定义 ,
则失败结点: n+1个(等于成功结点的空链域数量)
四、折半查找效率
查找成功失败都不超过树高h。
时间复杂度为:O(log2^n)
总结: