【python】数组中绝对值最小的数?

(1)如果数组第一个元素为非负数,那么minNum = arr[0](2)如果数组最后一个值为负数,那么minNum = arr[-1]。(3)如果数组中既有正数又有负数,首先找到正数与负数的分界点,如果分界点恰好为0,那么0为最小值。否则通过比较分界点左右的正数与负数的绝对值来确定最小数。如何查找正数与负数...
【python】数组中绝对值最小的数?
题目:有一个升序的数组,数组中可能有正数、负数或者0,求数组中元素的绝对值最小的数。例如,数组[-10, -5, -2, 7, 15, 50],该数组中绝对值最小的数是-2。

分析:二分法。该题可分为以下三种情况:

(1)如果数组第一个元素为非负数,那么minNum = arr[0]

(2)如果数组最后一个值为负数,那么minNum = arr[-1]。

(3)如果数组中既有正数又有负数,首先找到正数与负数的分界点,如果分界点恰好为0,那么0为最小值。否则通过比较分界点左右的正数与负数的绝对值来确定最小数。

如何查找正数与负数的分界点呢?采用二分法,主要思路:取数组中间位置的值a[mid],并将它与0值比较,比较结果分为如下三种情况:

(1)如果a[mid] == 0,那么这个数就是绝对值最小的数。

(2)如果a[mid] > 0,a[mid - 1] < 0,那么通过比较a[mid]与a[mid - 1]的绝对值就可以找到数组中绝对值最小的数;如果a[mid - 1] == 0, 那么a[mid - 1]就是要找的数;否则接着在数组的左半部分查找。

(3)如果a[mid] < 0,a[mid + 1] > 0,那么通过比较a[mid]与a[mid +1]的绝对值就可以找到数组中绝对值最小的数;如果a[mid + 1] == 0, 那么a[mid + 1]就是要找的数;否则接着在数组的右半部分查找。

code:

def findMinNum(arr):

    if arr is None or len(arr) <= 0:

        return

    # [1] 数组中没有负数

    if arr[0] >= 0:

        return arr[0]

    # [2] 数组中没有正数

    if arr[-1] <= 0:

        return arr[-1]

    # [3] 数组中既有正数又又负数

    mid = None

    absMin = None

    begin = 0

    end = len(arr) - 1

    while begin < end:

        mid = begin + (end - begin) >> 1

        # 如果arr[mid] == 0,则是绝对值最小的数

        if arr[mid] == 0:

            return 0

        # 如果大于0, 正负数的分界点在左侧

        elif arr[mid] > 0:

            # 继续在数组的左半部分查找

            if arr[mid - 1] > 0:

                end = mid - 1

            elif arr[mid - 1] == 0:

                return 0

            # 找到正负数的分界点

            else:

                break  # 如果小于0, 在数组右半部分查找

        else:

            # 在数组的右半部分继续查找

            if arr[mid + 1] < 0:

                begin = mid + 1

            elif arr[mid + 1] == 0:

                return 0

            else:

                break

    # 获取正负数分界点处绝对值最小的值

    if (arr[mid] > 0):

        if arr[mid] < abs(arr[mid - 1]):

            absMin = arr[mid]

        else:

            absMin = arr[mid - 1]

    else:

        if abs(arr[mid]) < abs(arr[mid + 1]):

            absMin = arr[mid]

        else:

            absMin = arr[mid + 1]

    return absMin

if __name__ == "__main__":

    arr = [-10, -5, -2, 7, 15, 50]

    print(findMinNum(arr))2022-07-31
mengvlog 阅读 6 次 更新于 2025-07-20 00:05:52 我来答关注问题0
  • (1)如果a[mid] == 0,那么这个数就是绝对值最小的数。(2)如果a[mid] > 0,a[mid - 1] < 0,那么通过比较a[mid]与a[mid - 1]的绝对值就可以找到数组中绝对值最小的数;如果a[mid - 1] == 0, 那么a[mid - 1]就是要找的数;否则接着在数组的左半部分查找。(3)如果a[...

  • 1. 内置函数abs()计算绝对值最直接的方式是使用Python内置的abs()函数,如求-100的绝对值,代码如下:pythonresult = abs(-100)print(result) # 输出: 100 2. 条件语句利用条件判断也能实现绝对值计算,如:pythonnum = -102if num >= 0: abs_num = numelse: abs_num = -numprint(...

  •  深空游戏 python编程 输入一组整数数组,求出两两之差的最小绝对值。只需得出最小值 如:输入:[10,3,12,9] 输入:1

    最后,我们输出min的值,即为两两之差的最小绝对值。运行结果如下:>>> [69, 45, 38, 15, 11, 10, 8, 2]>>> 1 这个示例中,最小绝对值为1,这表明在给定数组中,相邻元素之间的差值最小为1。通过这种方法,我们可以轻松地找到一组整数数组中两两之差的最小绝对值。

  • minNum = Nonefor i in range(1,3+1): print('请输入第%s个数:' % i,end='') num = int(input()) if not minNum: minNum = num if abs(minNum) > abs(num): minNum = numprint('绝对值最小的是:%s' % minNum)

  •  文暄生活科普 python 数据最大绝对值归一化

    为了实现最大绝对值归一化,我们可以利用 Python 的 preprocessing 库中的 MaxAbsScaler 类。调用 fit_transform() 方法,该方法首先学习输入数据的最大绝对值,随后对数据进行归一化操作,使得数据的最大绝对值等于1。以一个示例数据集 [0 1 2 3 4] 来说明这一过程。应用 MaxAbsScaler 后,得到的...

檬味博客在线解答立即免费咨询

Python相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部