习题1.8 二分查找 (20分)

// L是用户传入的一个线性表,其中ElementType元素可以通过>、==、<进行比较,
       // 并且题目保证传入的数据是递增有序的。
// 函数BinarySearch要查找X在Data中的位置,即数组下标
       // (注意:元素从下标1开始存储)。
// 找到则返回下标,否则返回一个特殊的失败标记NotFound。
while(l<=r){
        int mid=(l+r)/2;
        if(L->Data[mid]>X){
            r=mid-1;
        }else if(L->Data[mid]<X){
            l=mid+1;

if(l>r){
        return NotFound;
    }
    
// 5
// 12 31 55 89 101
// 31
//============
//2


// 3
// 26 78 233
// 31
//================
//0
// Position BinarySearch( List L, ElementType X );
// L是用户传入的一个线性表,其中ElementType元素可以通过>、==、<进行比较,
       // 并且题目保证传入的数据是递增有序的。
// 函数BinarySearch要查找X在Data中的位置,即数组下标
       // (注意:元素从下标1开始存储)。
// 找到则返回下标,否则返回一个特殊的失败标记NotFound。

Position BinarySearch( List L, ElementType X ){// 并且题目保证传入的数据是递增有序的。
    int l=1,r=L->Last;
    while(l<=r){
        int mid=(l+r)/2;
        if(L->Data[mid]>X){
            r=mid-1;
        }else if(L->Data[mid]<X){
            l=mid+1;
        }else{
            return mid;
        }
    }
//     if(l==r){
//         return l;
//     }else 
    if(l>r){
        return NotFound;
    }
    
}

©️2020 CSDN 皮肤主题: 点我我会动 设计师:上身试试 返回首页