#AG103. 【程序填空题】1.3算法简介程序填空

【程序填空题】1.3算法简介程序填空

def process_data(data):  
    n = len(data)  
    for i in range(n):  
        print("Processing:", data[i])  
    low, high = 0, n-1  
    while low <= high:  
        mid = (low + high) // 2  
        if data[mid] == "target":  
            return mid  
        elif data[mid] < "target":  
            low = mid + 1  
        else:  
            high = mid - 1  
    return -1  

1.分析上面函数的时间复杂度,用大O表示法表示为:{{ input(1) }}。


def find_first_occurrence(arr, target):  
    low, high = 0, len(arr)-1  
    result = -1  
    while low <= high:  
        mid = (low + high) // 2  
        if arr[mid] == target:  
            result = mid  
            ______  # 继续向左搜索  
        elif arr[mid] < target:  
            low = mid + 1  
        else:  
            high = mid - 1  
    return result  

2.补充完善程序,使得在有序数组 [1, 2, 2, 2, 3, 4] 中,找到目标值 2 第一次出现的索引。请在划线处补全二分查找的边界调整逻辑的代码。{{ input(2) }}。


def safe_binary_search(arr, target):  
    low, high = 0, len(arr)-1  
    while low <= high:  
        mid = (low + high) // 2  # 可能溢出  
        if arr[mid] == target:  
            return mid  
        elif arr[mid] < target:  
            low = mid + 1  
        else:  
            high = mid - 1  
    return -1  

3.以上代码在极大数组(长度超过10⁹)时可能导致整数溢出。请修改 mid 的计算方式以修复问题。{{ input(3) }}。