
# 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)。