📅  最后修改于: 2023-12-03 15:07:33.205000             🧑  作者: Mango
该问题是ISRO CS 2007年计算机科学考试中的问题12。问题要求编写一个程序,该程序将一个大小为n的整数数组作为输入,并找到该数组的最大值和最小值。
Markdown代码片段如下所示:
def find_max_min(arr):
"""
This function finds the maximum and minimum values in an array.
Args:
arr (list): A list of integers.
Returns:
tuple: A tuple containing the maximum and minimum values in the array.
"""
# setting the initial max and min values to the first element of the array
max_val = arr[0]
min_val = arr[0]
# iterating through the array to find the max and min values
for i in range(len(arr)):
if arr[i] > max_val:
max_val = arr[i]
if arr[i] < min_val:
min_val = arr[i]
return (max_val, min_val)
该函数首先将数组的第一个元素作为最大值和最小值的初始值。然后,它遍历整个数组,如果它遇到比当前最大值更大的元素,就将该元素设置为新的最大值。同样地,如果它遇到比当前最小值更小的元素,就将该元素设置为新的最小值。最后,该函数将最大值和最小值作为元组返回。
该函数可以使用以下方式调用:
arr = [5, 3, 6, 2, 1, 7, 4]
max_val, min_val = find_max_min(arr)
print("Maximum value:", max_val)
print("Minimum value:", min_val)
输出将是:
Maximum value: 7
Minimum value: 1
这个函数的时间复杂度为$O(n)$,因为它只需要遍历一次整个数组,并比较每个元素。它的空间复杂度是$O(1)$,因为它只需要存储两个变量(即最大值和最小值)。