[英]Bubble sort with pointers using Python
該代碼不適用於某些測試用例。
def bubbleSort(array):
l = 0
r = 1
isSorted = False
while not isSorted:
isSorted = True
while r <= len(array)-1:
if array[r] < array[l]:
swap(l, r, array)
isSorted = False
l += 1
r += 1
return array
def swap(i, j, array):
array[i], array[j] = array[j], array[i]
return
誰能幫我解決這個問題??
您需要將 r 和 l 重新初始化為r = 1
和l = 0
while not isSorted:
。 否則你只會運行一次完整的循環,因為在第一次迭代結束時,r 已經在len(array)
就您的代碼而言,每次isSorted
為False
時,您都必須循環遍歷所有元素。 因此,每次執行外部while
循環時都必須初始化l = 0
和r = 1
。
不需要使用兩個計數器變量l
& r
,您可以簡單地實現冒泡排序,如下所示:
def bubbleSort(array):
isSorted = False
while not isSorted:
isSorted = True
for i in range(1, len(array)):
if array[i] < array[i - 1]:
swap(i, i - 1, array)
isSorted = False
return array
def swap(i, j, array):
array[i], array[j] = array[j], array[i]
return
當你執行>>>print(bubbleSort([10, 2, 1, 3, 2, 6, 25]))
輸出將是:
[1, 2, 2, 3, 6, 10, 25]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.