通用最值算法1

本文介绍了如何使用通用最值算法来寻找序列中的最小值和最大值,以Python为例,通过编写find_min和find_max函数展示了实现过程。文章强调掌握基础算法的重要性,同时指出自定义函数相对于Python内置函数的优势在于灵活性和对索引查找的时间复杂度优化。
摘要由CSDN通过智能技术生成

第一篇 简单的算法


1.1通用最值算法

所谓最值,就是最大或最小的值。生活中,找全班考试成绩最低分和最高分时,我们可以用肉眼快速地判断,但假设是整个年级、整个学校,乃至整个国家学生的考试成绩,那么肉眼看就会变成一个愚蠢的方法,正确的方法是:让计算机解决。

想要交给计算机解决,就需要有一定的编程基础。本书我们不介绍编程语言的语法,一切以算法为主,遵循浅显易懂、添加注释的原则。

本书中我们的语言是python,因为python的门槛较低一些。

1.1.1 寻找最值的通用最值

给出序列nums = [3, 1, 2, 4, 5],求出序列的最小值和最大值。

我们首先通过直观的观察,1是最小值,5是最大值。但我们要想的是怎么确定是1和5。我们一个一个的看,首先看到3,所以现在的最小值是3,而3后面是1,1比3小,于是1变成最小值。最大值仍然如此。

这样我们就有了思路。

  1. 找到序列第一个元素,将它设为默认的最小值

  2. 遍历整个序列

  3. 如果新得到的元素比当前最小值小,那么将当前最小值更新

最大值同理。

我们将代码写成函数的形式(注意,我们在本书中会将所有算法以函数的形式给出,目的是让读者养成一个良好的习惯,以及记住所有的算法名称)。

函数签名如下:

def find_mindef find_max

具体代码:

#最小值
def find_min(nums):
    _min = nums[0]#找到第一个元素
    for i in nums:
        if i < _min:
            _min = i#更新
    return _min

#最大值
def find_max(nums):
    _max = nums[0]
    for i in nums:
        if i > _max:
            _max = i
    return _max

整体代码结构类似,就是判断的地方要注意符号。python中也为我们提供了minmax函数。但是python都给我们内置函数,我们为什么要自己写呢?这里有两个要点:第一,通用最值是最基本的算法之一,只有掌握了基本的算法,你的基本功才能扎实,不然你会跟不上;第二,很多算法都有通用最值在其中,不过通常查找的不是值,而是索引,而我们max之后再找索引会提升时间复杂度;第三,你会被同学嘲笑。

把找到索引的通用最值留作作业,将会在1.1.2中解答。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值