折半查找验证程序
发布日期:2021-05-07 17:58:56 浏览次数:16 分类:精选文章

本文共 1074 字,大约阅读时间需要 3 分钟。

为了解决这个问题,我们需要实现一个折半查找算法,并输出每一步的比较过程。折半查找是一种高效的查找算法,适用于已排序数组。我们将数组进行排序,然后使用折半查找的方法查找目标值,并记录每一步的操作。

方法思路

  • 读取输入数据:首先读取关键码集合的大小 n 和关键码数组,然后读取三个待查值。
  • 排序数组:对关键码数组进行排序,以便进行折半查找。
  • 折半查找过程:对于每个待查值,初始化 lowhigh 的值,分别指示当前查找的范围。每次计算中间值 mid,并比较目标值与 r[mid] 的大小,调整查找范围。记录每一步的 lowmidhigh 和比较值,并输出。
  • 输出结果:如果找到目标值,输出其下标;否则,输出 0。
  • 解决代码

    n = int(input())
    r = list(map(int, input().split()))
    r.sort()
    k_list = [int(input()) for _ in range(3)]
    for k in k_list:
    low = 1
    high = n
    found = False
    while low <= high:
    mid = (low + high) // 2
    current_val = r[mid]
    print(f"{low} {mid} {high} {current_val}")
    if k < current_val:
    high = mid - 1
    elif k > current_val:
    low = mid + 1
    else:
    found = True
    break
    if found:
    print(mid)
    else:
    print(0)

    代码解释

  • 读取输入:使用 input() 函数读取输入数据,首先读取关键码集合的大小 n,然后读取关键码数组并排序。
  • 处理待查值:读取三个待查值,并逐个处理。
  • 折半查找:对于每个待查值,初始化 lowhigh,进入循环计算中间值 mid,比较目标值与 r[mid] 的大小,调整查找范围,并记录每一步的比较结果。
  • 输出结果:如果在查找过程中找到目标值,输出其下标;否则,输出 0。
  • 通过这种方法,我们可以高效地查找目标值,并记录每一步的操作,满足题目的要求。

    上一篇:顺序查找验证程序
    下一篇:无向图的邻接矩阵表示法验证程序

    发表评论

    最新留言

    不错!
    [***.144.177.141]2025年05月08日 03时25分19秒