我正在介紹算法課程。作爲家庭練習的一部分,我需要證明給定的雙向氣泡排序算法是正確的。 我們已經到下面的算法(用Python實現):雙向氣泡排序證明
def bidirectional_bubble_sort(a):
left = -1
right = len(a)
while left < right:
swap = False
left += 1
right -= 1
for i in xrange(left, right):
if a[i] > a[i + 1]:
t = a[i]
a[i] = a[i + 1]
a[i + 1] = t
swap = True
if not swap:
return
else:
swap = False
for i in xrange(right - 1, left - 1, -1):
if a[i] > a[i + 1]:
t = a[i]
a[i] = a[i + 1]
a[i + 1] = t
swap = True
if not swap:
return
我有點由主循環條件混淆。算法是否達到了left> = right(之前在內部返回語句之一退出)的位置?
是。它的確如此。 'left'遞增,'right'遞減,所以最終左邊必須大於右邊。 –