每天一道算法题

第一章:计算最值,次最值

第二章:进制的转换

第三章:质数,水仙花,公约数

第四章:子序列问题

首页 > 每天一道算法题 > 第一章:计算最值,次最值 > 1.5节:使用for循环计算次小值

1.5节:使用for循环计算次小值

薯条老师 2021-03-26 09:16:31 236460 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师的线下Python小班办得很好,学员的平均就业薪资有11K。线下小班培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

1.5.1 算法思路

在for循环中计算最小值的逻辑很简单,如果需要计算出次小值,又该怎么实现呢?

许多初学者将这个问题想得过于复杂,要学会将复杂的问题简化处理,这样才能更好地理解事物的本质。

对于循环执行,可将问题简化为循环只执行两次:如果第一次遍历出来的值比最小值要小,那么就更新为最小值。如果第二次遍历出来的比最小值要小,那么此时的次小值就一定是上一次的最小值。

在实现的过程中,还需注意当遍历出来的值大于最小值且小于次小值的情况,以及对最小值和次小值初始化时,二者刚好为最小值的特殊情况。

1.5.2 算法实现

# __author__ = 薯条老师
import random

# 通过列表推导式来生成一个包含10个随机整数的列表
numbers = [random.randint(0,  100) for _ in range(10)]


# min_表示最小值,min_k2表示次小值
min_, min_k2 = numbers[0], numbers[1]

for number in numbers[1:]:
    if nummber < min_:
        # 如果遍历出来的值比min_要小,那么次小值一定是上次的最小值
        min_k2 = min_
        min_ = number
    elif min_ < number < min_k2:
        # 如果遍历出来的比min_要大,但比次小值小,那么次小值就为当前遍历出来的值
        min_k2 = _
    elif min_ == min_k2:
        # 如果min_与min_k2刚好为最小值,且相等,就将次小值更新为当前值
        min_k2 = number
else:
    print("次小值:{}".format(min_k2))

1.5.3 最具实力的小班培训

来这里参加Python和Java小班培训的学员大部分都找到了很好的工作,平均月薪有11K,学得好的同学,拿到的会更高。由于是小班教学,所以薯条老师有精力把每位学员都教好。打算参加线下小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪11K-20K, 免费领取课程大纲
(4) Python大数据分析,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取学习资料:



欢迎 发表评论: