-2
さまざまなソートアルゴリズム(選択、バブル、マージ、ツリーソート)の実行時間を測定するプログラムを作成しています。経過時間に基づいてリストサイズを増やす
テストケースに使用されるリストサイズは10,000から始まり、テストの実行時間が60秒を超えるまでテストごとに10,000ずつ増加する必要があります。
これが私の問題です。
私はこれがおそらく非常に間違った(そして醜い)コードを作りました(私は現在バブルソートだけでテストしています)。
import random
import time
def bubbleSort(a_list):
for passnum in range(len(a_list)-1,0,-1):
for i in range(passnum):
if a_list[i]>a_list[i+1]:
temp = a_list[i]
a_list[i] = a_list[i+1]
a_list[i+1] = temp
a_list = []
for i in range(10000):
a_list.append(random.randrange(0,10000))
start = time.perf_counter()
bubbleSort(a_list)
end = time.perf_counter()
elapsed = end - start
print("{0:.8f}".format(elapsed, "\n"))
print(a_list)
if elapsed <= 60:
for i in range(len(a_list), len(a_list)+10000):
a_list.append(random.randrange(len(a_list)+10000))
start = time.perf_counter()
bubbleSort(a_list)
end = time.perf_counter()
elapsed = end - start
print("{0:.8f}".format(elapsed, "\n"))
print(a_list)
else:
#it'll quit
非常に明白な無知には申し訳ありません。
これは私の最初の反応でした。それから私はこのループを思い付いた:
start = time.perf_counter()
while start <= 60:
for i in range(len(a_list)+10000):
a_list.append(random.randrange(len(a_list)+10000))
bubbleSort(a_list)
end = time.perf_counter()
elapsed = end - start
print("{0:.8f}".format(elapsed, "\n"))
print(a_list)
誰かが私に正しい方向にプッシュを与え、私はその背後にあるロジックを考えるのを助けることができる場合、私は非常に感謝されます。あらかじめありがとうございます。
ありがとうございました!!これは私には非常に明確です。 秒くらいのことについては、そうですね。私は開いた別のプログラムの書式をコピーし、小数点以下の桁は変更しませんでした。 良い昼/夜を過ごしましょう! – egg