A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ITClody 中级黑马   /  2015-6-18 09:35  /  832 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  折半查找思想
     基本思路:
        在有序列表中,取中间元素作为比较对象,若给定值与中间元素的要查找的数相等,则查找成功;若给定值小于中间元素的要查找的数,则在中间元素的左半区继续查找;
        若给定值大于中间元素的要查找的数,则在中间元素的右半区继续查找。不断重复上述查找过程,直到查找成功,或所查找的区域无数据元素,查找失败。
     实现步骤:
        a、low=1;high=length;//设置初始区间
                b、当low>high时,返回查找失败信息//表空,查找失败
                c、当low≤high,mid=(low+high)/2;  //取中点
                    ①、若key<arr[mid],high=mid-1; 转b  //查找在左半区进行
                        ②、若key>arr[mid],low=mid+1;  转b  //查找在右半区进行
                        ③、若key=arr[mid],返回数据元素在表中位置  //查找成功
                        注:折半查找前提:在一个有序数组中查找。
           例如:key=45;
               0        1        2        3        4       
                   12        45        66        110        200
                   l                m                h
           循环:mid=(l+h)/2; 如上:m=(0+4)/2;
           key(值是45)<a[mid](值是66)
           h=m-1;
           key(值是45)>a[mid](值是12)
           l=m+1;
           key(值是45)=a[mid](值是45)-->查找到

2 个回复

倒序浏览
顶上。。。
回复 使用道具 举报

感谢支持,继续努力
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马