📌  相关文章
📜  在包含小数和大数的数组中查找最大和最小数字(1)

📅  最后修改于: 2023-12-03 15:37:40.587000             🧑  作者: Mango

在包含小数和大数的数组中查找最大和最小数字

在编程中,常常需要在一个数组中查找最大和最小的数字。这个问题不仅仅是在整数数组中出现,还会出现在包含小数和大数的数组中。下面介绍几种查找最大和最小数字的方法。

方法一:暴力枚举

最简单而且最暴力的方法是遍历整个数组,比较每个元素的大小,找到最大和最小数字。这种方法的时间复杂度是 O(n),n 是数组中元素的个数。该方法的代码片段如下:

def max_min_nums(nums):
    max_num = nums[0]
    min_num = nums[0]
    for num in nums:
        if num > max_num:
            max_num = num
        if num < min_num:
            min_num = num
    return max_num, min_num
方法二:排序

对于包含小数和大数的数组,还可以使用排序来查找最大和最小数字。首先将数组排序,然后只需要取出数组的第一个和最后一个元素即为最小和最大数字。该方法的时间复杂度为排序算法的时间复杂度,一般来说是 O(nlogn)。该方法的代码片段如下:

def max_min_nums(nums):
    nums.sort()
    return nums[-1], nums[0]
方法三:分治法

分治法是将问题分成较小的子问题来解决的一种算法。对于查找最大和最小数字的问题,可以采用分治法来解决。将数组分成左右两部分,分别找到左右两部分的最大和最小数字,然后比较出整个数组的最大和最小数字。该方法的时间复杂度为 O(nlogn)。该方法的代码片段如下:

def max_min_nums(nums):
    if len(nums) == 1:
        return nums[0], nums[0]
    if len(nums) == 2:
        return (nums[0], nums[1]) if nums[0] < nums[1] else (nums[1], nums[0])
    mid = len(nums) // 2
    left_max, left_min = max_min_nums(nums[:mid])
    right_max, right_min = max_min_nums(nums[mid:])
    return max(left_max, right_max), min(left_min, right_min)

总结起来,根据具体的情况选择不同的方法。如果数组很小,暴力枚举是最好的方法;如果数组很大,排序和分治法可能更加适合。