【发布时间】:2017-04-18 22:40:26
【问题描述】:
问题:找到将元素插入排序数组的位置
A[1] > A[2] > A[3] > ... > A[ n ]
- 显示最好和最坏的情况。
- 编写算法解决问题
我的回答:
最好的情况是 T(n) = 1,换句话说,在第一个位置,其中 n 是元素的大小。最坏的情况是 T(n) = n + 1,也就是最后一个位置 + 1。
def find_position(element, l):
i = 0
inserted = False
for item in l:
if element < item:
inserted = True
break
i = i +1
if not inserted:
return len(l)
else:
return i
其他一些学生写了一个二分搜索,最坏的情况比我的好,并告诉我我的答案不正确。但我不同意,因为这个练习没有明确写出优化算法。
我的逻辑有什么错误吗?
【问题讨论】:
-
你实际上并没有插入任何东西。此外,最好和最坏的情况在不参考特定算法的情况下是没有意义的,因此第 1 部分不是一个格式正确的问题。
-
对不起,我修正了老师的答案,翻译错误。葡萄牙语是:“Considere o problema de encontrar a posição de inserção de um novo elemento em conjunto ordenado:”