Page 125 - 高中 信息技术 选择性必修1 数据与数据结构
P. 125

 5.2 查找







                         (3) 若相等,则查找成功,返回该元素的下标。
                         (4) 若k< a[mid],则将范围缩小到左子表a[0]~a[mid-1]。
                         (5) 若k> a[mid],则将范围缩小到右子表a[mid+1]~a[n-1]。
                         (6) 迭代以上过程,直到找到k或当前查找区间为空(即查找失败)。
                         二分查找算法的过程如图5-6所示。











                                             广东教育出版社

























                                                         图5-6 二分查找流程图



                         二分查找算法的实现代码如下:
                         int binsearch(ShangPinType a[],int k,int n)
                         //在n个元素的数组a中二分查找k
                         {
                           int low=0,high=n-1; //待查区间下界、上界

                           while(low<=high)
                          {
                             int mid=(low+high)/2; //取待查区间内中间元素的下标

                             if(k==a[mid].BianHao) return mid;  //中间元素即待找元素,返回mid值
                             else if(k<a[mid].BianHao) high=mid-1;  //修改区间上界,在左子表
                                                 //继续查找
                             else low=mid+1;  //修改区间下界,在右子表继续查找
                          }

                           return -1;  //未找到,返回-1
                         }

                                                                                                                    117117







          21X2204.indd   117                                                                                       2019/9/26   13:53:38
   120   121   122   123   124   125   126   127   128   129   130