助けてください。バブルソートアルゴリズムを最適化する必要があります。これは、最適化されていないバブルソートよりも全体の比較を少なくするためです。私は「(唯一の左から右へ移動する)通常のバブルソート:Python 3:最適化されたバブルソート
def bubbleSort(values):
n = len(values) - 1
swap = True
ncomp = 0 # My total comparisons counter
while swap:
swap = False
for i in range(n): # i = 0, 1, 2, ..., n-1
ncomp += 1
if values[i] > values[i+1]:
temp = values[i]
values[i] = values[i+1]
values[i+1] = temp
swap = True
return values, ncomp
だから、基本的に私が作成する方法を知らない 『だけを作成するために管理両方向の旅を泡するbubbleSortPlus機能、最適化されたバブルソート』を:左から右へ、右から左への移動が直ちに続きます。理論的には、各パスでは、バブルの移動を短くする必要があります(変数内で最後のスワップの位置を保存し、その位置で次の移動を開始します)。
[バブルソートコードのデバッグ方法](http://stackoverflow.com/a/36932606/2521214)を参照すると、内部ループカウントが時間とともに変化する最適化が見つかります。あなたが話している最適化は、2つのパスがお互いに往復するので、全く助けにならないでしょう。オーバーヘッドは言うまでもなく、結果は間違っている(適切にコーディングされていない場合)か、それ以前には遅くなります。 – Spektre