-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()
)、並べ替えを行うと、アルゴリズムが大幅に高速化されます。次に、n 個の数値の追加は O(n log n) 時間 (並べ替えと同じ時間) で行われます。
http://wiki.python.org/moin/TimeComplexityを参照