簡體   English   中英

冒泡排序不在 Python 中排序

[英]Bubble sort not sorting in Python

我已經開始嘗試再次使用 python 來編寫一些簡單的代碼,而在此之前我只真正使用過 p5.js。 我正在嘗試對冒泡排序進行編碼,在進行了冒泡排序后,我將部分代碼復制到另一個代碼中,以實現 First Fit 遞減裝箱。 現在只需少量更改,排序就無法像以前那樣工作了。 我只是將它更改為執行所有冒泡排序,直到它被排序而不是一次排序,用戶輸入介於兩者之間。 新代碼沒有對項目進行正確排序,並且經常將列表中的最高數字排序到中間。 我嘗試了包括 108 和 20 在內的數字,即使它是遞減排序,108 也總是在 20 之后。 我使用的氣泡功能是

def bubble(x):
y = []
i = 0
k = 1
while i + k < len(x):
    if x[i] < x[i + k]:
        y.append(x[i + k])
        k = k + 1
    else:
        y.append(x[i])
        i = i + k
        k = 1
y.append(x[i])
return y

原代碼是:

    numbers = []
len = int(input("How many numbers are there? "))

for i in range(0, len):
    current = str(i + 1)
    num = int(input("Number " + current + " "))
    numbers.append(num)

print("Here are your numbers:")
print(numbers)

bubbling = False

def bubble(x):
    y = []
    i = 0
    k = 1
    while i + k < len:
        if x[i] < x[i + k]:
            y.append(x[i + k])
            k = k + 1
        else:
            y.append(x[i])
            i = i + k
            k = 1
    y.append(x[i])
    return y

cont = input("Bubble? (Y/N) ")
if cont == "Y":
    bubbling = True

while bubbling == True:
    previous = numbers
    numbers = bubble(numbers)

    if numbers == previous:
        end = input("The bubble sort has been finished" )
        bubbling = False
        break

    print(numbers)

    cont = input("Bubble? (Y/N) ")

    if cont == "Y":
        continue
    else:
        break

我的第二次迭代是:(一次只輸入一個數字,不輸入任何內容以使其冒泡)

listing = True
bubbling = True

temp_array = []

# if an input is empty, stop adding numbers to the array and add bin size (LATER)

while listing:
    temp_number = input()
    if temp_number:
        temp_array.append(temp_number)
    else:
        listing = False
        break


print(temp_array)


def bubble(x):
    y = []
    i = 0
    k = 1
    while i + k < len(x):
        if x[i] < x[i + k]:
            y.append(x[i + k])
            k = k + 1
        else:
            y.append(x[i])
            i = i + k
            k = 1
    y.append(x[i])
    return y


while bubbling:
    prev_array = temp_array
    temp_array = bubble(prev_array)
    if temp_array == prev_array:
        bubbling = False
        break

print(temp_array)
numbers = []
len = int(input("How many numbers are there? "))

for i in range(0, len):
    current = str(i + 1)
    num = int(input("Number " + current + " "))
    numbers.append(num)

print("Here are your numbers:")
print(numbers)

bubbling = False

def bubble(x):
    y = []
    i = 0
    k = 1
    while i + k < len:
        if x[i] < x[i + k]:
            y.append(x[i + k])
            k = k + 1
        else:
            y.append(x[i])
            i = i + k
            k = 1
    y.append(x[i])
    return y

cont = input("Bubble? (Y/N) ")
if cont == "Y":
    bubbling = True

while bubbling == True:
    previous = numbers
    numbers = bubble(numbers)

    if numbers == previous:
        end = input("The bubble sort has been finished" )
        bubbling = False
        break

    print(numbers)

    cont = input("Bubble? (Y/N) ")

    if cont == "Y":
        continue
    else:
        break

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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