-Edit- 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()
),然後。然後,在O(n log n)時間(與排序相同的時間)中添加n個數字。
見http://wiki.python.org/moin/TimeComplexity
對不起,我花了這麼長的時間來接受這個答案,這正是我所期待的。謝謝! – Broseph