要求:
对于升序排列数组,数组中有正数、负数、或0,求数组中元素的绝对值最小的数。例如数组[-10,-5,-2,7,15,50]中绝对值最小的数为-2。
分析:
方法一:顺序比较法
最简单的方法就是从头到尾遍历数组元素,对每个数字求绝对值,然后比较就可以求出绝对值最小的数。
方法二:二分法
求绝对值最小的数分为三种情况:(1)如果数组中第一个元素为非负数,那么绝对值最小的数肯定为数组第一个元素;(2)如果数组最后一个元素的值为负数,那么绝对值最小的数肯定是数组最后一个元素;(3)如果数组中既有正数又有负数,首先找到正负数分界点,如果分界点恰好为0,那么0就是绝对值最小的数。否则通过比较分界点左右的正数与负数绝对值来确定最小的数。那么如何找到正负数分界点呢?当然是二分法啦~~~
实现代码:
#方法一
# -*- coding:utf-8 -*-
def findMin(array):
if array == None or len(array) <= 0:
print("输入参数不合理")
return 0
mins = 2**32
i = 0
while i < len(array):
if abs(array[i]) < abs(mins):
mins = array[i]
i += 1
return mins
if __name__ == "__m

这篇博客介绍了如何在升序排列的数组中寻找绝对值最小的数。方法包括顺序比较法(遍历数组求绝对值并比较)和二分法(针对正负数分界点进行查找)。二分法在平均情况下具有更高的效率,时间复杂度为O(log N),而顺序比较法的时间复杂度为O(N)。
最低0.47元/天 解锁文章

569

被折叠的 条评论
为什么被折叠?



