二分查找

来源:互联网 发布:mac怎么下lol 编辑:程序博客网 时间:2024/06/05 20:55

1、属类:静态查找(即只实现查找,不实现插入和删除,集合中的记录是固定的

2、条件:有序性、连续存放在数组中(不能存放在链表中

3、时间复杂度:O(logN)

4、操作顺序:

例:(查找成功)

例:(查找不成功)

(图源自陈越老师网易云课堂课件)

注意:left与right每次值的变化(即left=mid+1ORright=mid-1,如果left和right的更新不是取mid+1和mid-1而是都取mid,程序是正确的);

                         mid的取值有余数时取整;

5、代码实现:

int BinarySearch(StaticTable *Tbl,ElementType K){//在表Tbl中查找关键字为K的数据元素    int left,right,mid,NoFound=-1;    left=1;    right=Tbl->Length;    while(left<=right)    {        mid=(left+right)/2;        if(K<Tbl->Element[mid])   right=mid-1;        else if(K>Tbl->Element[mid])   left=mid+1;        else return mid;    }    return  NoFound;}



0 0
原创粉丝点击