要求:
对于升序排列数组,数组中有正数、负数、或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