
折半查找验证程序
读取输入数据:首先读取关键码集合的大小 排序数组:对关键码数组进行排序,以便进行折半查找。 折半查找过程:对于每个待查值,初始化 输出结果:如果找到目标值,输出其下标;否则,输出 0。 读取输入:使用 处理待查值:读取三个待查值,并逐个处理。 折半查找:对于每个待查值,初始化 输出结果:如果在查找过程中找到目标值,输出其下标;否则,输出 0。
发布日期:2021-05-07 17:58:56
浏览次数:16
分类:精选文章
本文共 1074 字,大约阅读时间需要 3 分钟。
为了解决这个问题,我们需要实现一个折半查找算法,并输出每一步的比较过程。折半查找是一种高效的查找算法,适用于已排序数组。我们将数组进行排序,然后使用折半查找的方法查找目标值,并记录每一步的操作。
方法思路
n
和关键码数组,然后读取三个待查值。low
和 high
的值,分别指示当前查找的范围。每次计算中间值 mid
,并比较目标值与 r[mid]
的大小,调整查找范围。记录每一步的 low
、mid
、high
和比较值,并输出。解决代码
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
,然后读取关键码数组并排序。low
和 high
,进入循环计算中间值 mid
,比较目标值与 r[mid]
的大小,调整查找范围,并记录每一步的比较结果。通过这种方法,我们可以高效地查找目标值,并记录每一步的操作,满足题目的要求。
发表评论
最新留言
不错!
[***.144.177.141]2025年05月08日 03时25分19秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java攀枝花市房屋租售信息管理平台的设计与实现(ssm)
2023-01-24
java教学团队管理系统(ssm)
2023-01-24
java教学网站(ssm)
2023-01-24
java教学质量管理平台(ssm)
2023-01-24
java教师教学质量评估系统(ssm)
2023-01-24
java教师管理系统(ssm)
2023-01-24
java教师管理系统(ssm)
2023-01-24
java教师课堂助手app(ssm)
2023-01-24
java教师课程管理与教学辅助系统(ssm)
2023-01-24
java教研室采购管理系统(ssm)
2023-01-24
java教育机构管理(ssm)
2023-01-24
java教育辅导班信息网(ssm)
2023-01-24
BurpSuite实战九之使用Burp Repeater
2023-01-24
Ceph企业级实战
2023-01-24
Ceph对象存储详解
2023-01-24
Cisco防火墙配置实战
2023-01-24
DDNS动态域名无固定IPSEC配置实战
2023-01-24
DELL笔记本UEFI+GPT安装window10与Ubuntu双系统
2023-01-24
Docker+Jenkins+GIT CICD持续化集成实战
2023-01-24
Dockerfile 指令详解
2023-01-24