-编辑-
sort()
是 O(n log n)。在每个添加的数字之后通过排序将 n 个数字添加到列表中将是 O(n^2 log n)(但实际上这可能比 O(n^2) 算法更快,具体取决于排序的优化) .
更好的 O 实现是花费 O(n) 时间来搜索插入位置,并花费 O(n) 时间将新数字添加到列表中(总时间仍然 O(n))。将 n 个数字添加到列表中将是 O(n^2)。代码如下:
def addFaster(self, num):
index = 0
if(len(self.data) == 0):
self.data = [num]
else:
for i in range(0, len(self.data)):
if(self.data[i] >= num):
self.data.insert(i, num)
return
self.data.append(num)
我们可以通过在 O(log n) 时间内对正确索引进行二进制搜索来做得更好。向列表中添加一个新数字是 O(n)。由于整个操作是(比以前更好)O(n),将 n 个数字添加到列表中是 O(n^2),具有较低的常数。(不包括代码)
extend()
但是,如果您要在大组中添加新数字,如果您一次将它们全部添加(使用)然后排序,它将大大加快算法速度。然后,添加 n 个数字将在 O(n log n) 时间内完成(与排序相同)。
见http://wiki.python.org/moin/TimeComplexity