[英]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.