时间复杂度

本文介绍了两个算法问题:一是通过线性查找判断整数数组中是否存在数字77;二是解释生物细胞分裂的指数增长概念,并用递归算法展示了2的幂次方的计算。同时,还探讨了全排列的阶乘概念,通过递归实现计算阶乘的方案数量。
摘要由CSDN通过智能技术生成
  1. 题目: 输入长度为 N的整数数组 nums ,判断此数组中是否有数字 77 ,若有则返回 true ,否则返回 falsefalse 。

解题算法: 线性查找,即遍历整个数组,遇到 77 则返回 true 。

def f(n):
    k=0
    for i in range(len(n)):
        if n[i]==7:
            print( 'true')
            k+=1
            break
    if k==0:print('false')
l = list(map(int,input().split()))
f(l)
    

  1. 生物学科中的 “细胞分裂” 即是指数级增长。初始状态为 11 个细胞,分裂一轮后为 2 个,分裂两轮后为 4个,……,分裂 NN 轮后有 2^N2
    N
    个细胞。

算法中,指数阶常出现于递归,算法原理图与代码如下所示。

def algorithm(N):
    if N <= 0: return 1
    count_1 = algorithm(N - 1)
    count_2 = algorithm(N - 1)
    return count_1 + count_2
n=int(input())
print(algorithm(n))

  1. 阶乘阶对应数学上常见的 “全排列” 。即给定 NN 个互不重复的元素,求其所有可能的排列方案,则方案数量为:

N×(N−1)×(N−2)×⋯×2×1=N!

如下图与代码所示,阶乘常使用递归实现,算法原理:第一层分裂出 N 个,第二层分裂出 N - 1 个,…… ,直至到第 N 层时终止并回溯。

def algorithm(N):
    if N <= 0: return 1
    count = 0
    for _ in range(N):
        count += algorithm(N - 1)
    return count

n=int(input())
print(algorithm(n))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值