算法导论:2.2分析算法练习题 python描述

# 2.2分析算法练习题 python描述
# 2.2-1
# Θ(n^3)
# 2.2-2
A = [99, 38, 65, 97, 76, 13, 27, 49]


# 排序过程
# A = [13, 38, 65, 97, 76, 99, 27, 49]
# A = [13, 27, 65, 97, 76, 99, 38, 49]
# A = [13, 27, 38, 97, 76, 99, 65, 49]
# A = [13, 27, 38, 49, 76, 99, 65, 97]
# A = [13, 27, 38, 49, 65, 99, 76, 97]
# A = [13, 27, 38, 49, 65, 76, 99, 97]
# A = [13, 27, 38, 49, 65, 76, 97, 99]


def selectsort(A):
    length = len(A)
    for i in range(0, length - 1):
        min = i
        for j in range(i + 1, length):
            if A[j] < A[min]:
                min = j
        temp = A[min]
        A[min] = A[i]
        A[i] = temp


selectsort(A)

print(A)

# Θ(n^2)

#2.2-3
# 假设每个条目都有概率p为元素所寻找的。 然后,如果前面的k-1个位置不是被查找的元素,那么我们将只检查k个元素,
# 而第k个位置是所需的值。 考虑到这种分布的预期值,我们可以得到它

#2.2-4
# 对于一个好的最佳运行时间,修改算法首先随机产生输出,然后检查它是否满足算法的目标。 如果是这样,产生这个输出并停止。
# 否则,照常运行算法。 这不太可能会成功,但在最好的情况下,运行时间只会与检查解决方案一样长。
# 例如,我们可以修改选择排序,首先随机排列A的元素,然后检查它们是否按排序顺序排列。 如果是,输出A.否则按照惯例运行选择排序。
# 在最好的情况下,这个修改的算法将具有运行时间Θ(n)。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值