【发布时间】:2019-04-30 18:07:20
【问题描述】:
我正在为家庭作业编写一个 Python 3 冒泡排序程序,但我不知道如何在列表已经排序后重新打印原始列表(也称为未排序列表)。
以下已发布的问题几乎得到了答案,但未能为第二个打印的原始列表提供解决方案:
类似但未解决打印问题: Bubble Sort Homework
我希望在转发时我能得到一个完整的答案
import sys
def bubblesort(mylist):
changes = passes = 0
last = len(mylist)
swapped = True
# This original list (below) correctly prints as unsorted:
print("Original List: ", ','.join(map(str, mylist)) )
while swapped:
swapped = False
for j in range(1, last):
if mylist[j - 1] > mylist[j]:
mylist[j], mylist[j - 1] = mylist[j - 1], mylist[j] # Swap
changes += 1
swapped = True
last = j
# Only prints and increases number of passes if there was a swap
# Remove if statement for the correct number of passes
if(swapped):
passes += 1
print('Pass', passes, ':' , ','.join(map(str, mylist)))
# This original list (below) prints sorted:
print("\nOriginal List: ", ','.join(map(str, mylist)) )
print("Sorted List: ", ','.join(map(str, mylist)) )
print("Number of passes =",passes)
return mylist
print("Welcome to a Bubble Sort Algorithm in Python!")
mylist = " "
while True:
print("\nBubble sort in Python 3 Program")
mylist = input("Enter a the value or type Exit to exit: ")
if (mylist == "exit" or mylist == "Exit" or mylist == "EXIT"):
print("Goodbye")
sys.exit()
else:
mylist = [int(v) for v in mylist.split(',')]
bubblesort(mylist)
程序应产生以下打印结果:
原始列表:4、9、74、0、9、8、28、1
通过 1:4、9、0、9、8、28、1、74
传球 2:4、0、9、8、9、1、28、74
通过 3:0、4、8、9、1、9、28、74
第 4 关:0、4、8、1、9、9、28、74
通过 5:0、4、1、8、9、9、28、74
第 6 关:0、1、4、8、9、9、28、74
原始列表:4、9、74、0、9、8、28、1
排序列表:0、1、4、8、9、9、28、74
通过次数:6
实际打印结果:
原始列表:4、9、74、0、9、8、28、1
通过 1:4、9、0、9、8、28、1、74
传球 2:4、0、9、8、9、1、28、74
通过 3:0、4、8、9、1、9、28、74
第 4 关:0、4、8、1、9、9、28、74
通过 5:0、4、1、8、9、9、28、74
第 6 关:0、1、4、8、9、9、28、74
原始列表:0、1、4、8、9、9、28、74
排序列表:0、1、4、8、9、9、28、74
原始列表显示已排序
【问题讨论】:
-
为什么不单独存储列表然后打印出来呢?
-
Bubble Sort Homework的可能重复
标签: python sorting bubble-sort