📌  相关文章
📜  用于排序数组中的天花板的 Python3 程序(1)

📅  最后修改于: 2023-12-03 15:11:16.847000             🧑  作者: Mango

用于排序数组中的天花板的 Python3 程序

本程序实现了在一个升序排列的数组中查找指定的数,并返回该数的天花板值。天花板值指大于等于该数的最小整数值。

算法思路

本程序采用二分查找算法寻找指定的数,并返回其天花板值。具体实现流程如下:

  • 定义左右指针l,r,其中l指向数组首位,r指向数组末位;
  • 循环进行以下操作,直到数组被遍历完或者找到了天花板值:
    • 定义中间指针mid,并将其指向中间位置;
    • 如果mid指向的数大于等于指定数,则将r指向mid左边的位置,继续往左边查找;
    • 如果mid指向的数小于指定数,则将l指向mid右边的位置,继续往右边查找;
  • 当数组被遍历完仍未找到天花板值时,返回数组最后的位置值。
代码实现

以下是本程序的完整代码实现,使用Python3语言编写:

def findCeil(arr, n): 
    l = 0
    r = len(arr) - 1
    
    while(l <= r): 
        mid = l + (r - l) // 2
        
        if(arr[mid] == n): 
            return mid 
        
        elif(arr[mid] < n): 
            l = mid + 1

        else: 
            r = mid - 1
    
    if(l == len(arr)): 
        return -1 
        
    return l 

以上代码定义了一个findCeil函数,它接受两个参数,分别为一个升序排列的数组和指定的数。该函数使用二分查找算法,返回指定数的天花板值。

测试示例

以下是一个本程序的测试示例,用于测试程序的正确性:

arr = [1, 2, 3, 4, 8, 10, 12, 19]
n = 5
print(findCeil(arr, n))

以上代码将输出结果为 4,即在数组arr中,指定数5的天花板值为数组中大于等于指定数的最小整数值8所在的位置。