寻找数组中最接近目标的数字

本文介绍了在未排序和已排序数组中寻找最接近目标数字的两种方法:线性搜索(遍历整个数组)和二分搜索(基于排序的高效搜索)。提供Python代码示例以说明这两种搜索策略的应用。
部署运行你感兴趣的模型镜像

要寻找数组中最接近目标的数字,你可以使用一种称为线性搜索或二分搜索的方法,具体取决于数组是否已排序。以下是这两种方法的示例:

1. 线性搜索(未排序数组):

如果数组未排序,你可以使用线性搜索来查找最接近目标的数字。这个方法将遍历整个数组,找到与目标最接近的数字。

def find_closest_number(arr, target):

    closest = arr[0]

    min_difference = abs(target - arr[0])

   

    for num in arr:

        difference = abs(target - num)

       

        if difference < min_difference:

            min_difference = difference

            closest = num

   

return closest

示例用法:

arr = [4, 7, 12, 15, 18]

target = 9

result = find_closest_number(arr, target)

print("最接近的数字是:", result)

二分搜索(已排序数组):

如果数组已排序,你可以使用二分搜索来更有效地找到最接近目标的数字。

def binary_search_closest(arr, target):

    low = 0

    high = len(arr) - 1

   

    while low <= high:

        mid = (low + high) // 2

       

        if arr[mid] == target:

            return arr[mid]

        elif arr[mid] < target:

            low = mid + 1

        else:

            high = mid - 1

   

    # 找到最接近的数字

    if abs(arr[low] - target) < abs(arr[high] - target):

        return arr[low]

    else:

        return arr[high]

示例用法:

arr = [2, 5, 8, 12, 17, 19, 22]

target = 10

result = binary_search_closest(arr, target)

print("最接近的数字是:", result)

这两种方法分别适用于已排序和未排序的数组。根据你的需求选择其中一种方法。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫一样的女子245

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值