簡體   English   中英

使用 Python 使用指針進行冒泡排序

[英]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 = 1l = 0 while not isSorted: 否則你只會運行一次完整的循環,因為在第一次迭代結束時,r 已經在len(array)

就您的代碼而言,每次isSortedFalse時,您都必須循環遍歷所有元素。 因此,每次執行外部while循環時都必須初始化l = 0r = 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM