python求数组最小值和最大值_【python】查找数组中元素的最大值和最小值?

题目:给定数组arr,找出数组中的最大值和最小值。其中,数组中的值两两各不相同。

分析:采用分治法。将数组两两一对分组,如果数组元素个数为奇数个,就把最后一个元素单独分为一组,偶数个则不用,然后分别对每一组中相邻的两个元素进行比较,把两者中元素值较小的数放在数组的左边,值大的数放在数组的右边,比较n/2此就能够将数组分组完成。为此,最小值一定在每一组的左边部分,最大值一定在每一组的右边部分,接着只需要在每一组的左边部分查找最小值,右边部分查找最大值,查找分别需要比较n/2-1次和n/2-1次。总共大约为n/2*3。

code:

def getMaxAndMin(arr):

if arr is None:

print("参数不合法")

return

# 两两分组,把较小的数放在数组的左半部分,把较大的数放在右半部分

i = 0

while i < (len(arr) - 1):

if arr[i] > arr[i + 1]:

temp = arr[i]

arr[i] = arr[i + 1]

arr[i + 1] = temp

i += 2

# 在各个分组的左半部分查找最小值

minNum = arr[0]

i = 2

while i < len(arr):

if arr[i] > minNum:

minNum = arr[i]

i += 2

maxNum = arr[1]

# 在各个分组的右半部分查找最大值

i = 3

while i < len(arr):

if arr[i] > maxNum:

maxNum = arr[i]

i += 2

# 如果数组中元素个数是奇数哥,最后一个元素被分为一组,需要与其比较再确定最大最小值。

if len(arr) % 2 == 1:

if maxNum < arr[len(arr) - 1]:

maxNum = arr[len(arr) - 1]

if minNum > arr[len(arr) -1]:

minNum = arr[len(arr) -1]

return maxNum, minNum

if __name__ == "__main__":

arr = [7, 3, 19, 40, 4, 7, 1]

print(getMaxAndMin(arr))

程序的运行结果为:40, 1

9c4234c690a2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值