算法图解阅读笔记·选择排序

文章讲述了作者在准备蓝桥杯比赛时,通过阅读算法书籍加深对背包问题理解的过程。重点介绍了选择排序的实现,包括findsmallest函数寻找最小元素的逻辑以及selectsort函数如何创建新列表。文中强调了return在函数中的作用,并指出选择排序的时间复杂度为O(n^2)。
摘要由CSDN通过智能技术生成

备赛蓝桥杯,想了下也只是来图体验,重要的是我从这个动力中学到了什么,想尽可能地多了解一些眼前的资源,好决定未来的走向。所以开始阅读一下相关的算法书目,写一下学到的东西激励自己。知道这本书是在做背包问题时始终看不懂题解,偶然看见了这本书的风趣讲法,那时候的恍然大悟和感动,希望能在这本书的阅读中感受到更多。以上

算法图解p28,选择排序

#找数组中最小元素的函数
def findsmallest(n):
    sm=n[0]
    sm_num=0
    for i in range(len(n)):
        if n[i]<=n[0]:
            sm=n[i]
            sm_num=i
    return sm_num
def selectsort(n):
    newarr=[]
    for i in range(len(n)):
        sm=findsmallest(n)
        newarr.append(n.pop(sm))
    return newarr
print (selectsort([5,3,7,9,1]))

总结:

  1. 函数必须有返回值的解释:计算机只能看见你给了它公式和一些值,不知道你究竟是要这些原始值还是结果还是函数式,必须return告诉它,要的是这个结果

  1. 本公式中findsmallest函数返回的是index而非smallest的值原因是最终是要创建新列表存储源列表pop出的值,而pop()函数中需要的是索引,在不定义的情况下默认index=-1,即从最后一位开始删。假如一开始return的是最小值的值的话,会报错index out of range。

  1. 时间复杂度是o(n*n),遍历每个元素所花的是o(n),n个元素遍历n次

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值