【问题标题】:Bubble sort descending list in PythonPython中的冒泡排序降序列表
【发布时间】:2017-05-13 16:33:49
【问题描述】:

如何使用冒泡排序但按降序排列列表? 我搜索了其他主题,但找不到答案。 这是我的冒泡排序代码的工作实现:

from timeit import default_timer as timer
import resource
start = timer()
def bubbleSort(alist):
    for passnum in range(len(alist)-1,0,-1):
        for i in range(passnum):
            if alist[i]>alist[i+1]:
                temp = alist[i]
                alist[i] = alist[i+1]
                alist[i+1] = temp


with open('lista.txt', 'r') as f:
    long_string = f.readline()
    alist = long_string.split(',')
bubbleSort(alist)
f = open("bubble.txt", "w")
print >>f,(alist)
print resource.getrusage(resource.RUSAGE_SELF).ru_maxrss / 1000
end = timer()
print(end - start)
f.close()

【问题讨论】:

  • 假设bubbleSort 工作正常,我认为将if alist[i]>alist[i+1] 更改为if alist[i+1] > alist[i] 应该工作。
  • 你的代码是做什么的?它有效吗?如果不是,你怎么知道?它失败的最小数据量是多少?有任何数据可以使用吗?请参阅How to Ask,尤其是如何创建minimal reproducible example

标签: python sorting bubble-sort


【解决方案1】:

您需要将以下 if 语句 if alist[i]<alist[i+1]: 中的大于替换为小于 if alist[i]<alist[i+1]:。您还需要返回 alist,留下以下内容。

def bubbleSort(alist):
for passnum in range(len(alist)-1,0,-1):
    for i in range(passnum):
        if alist[i]<alist[i+1]:
            temp = alist[i]
            alist[i] = alist[i+1]
            alist[i+1] = temp
return(alist)

【讨论】:

    【解决方案2】:

    这样写alist[i]&lt;alist[i+1]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-17
      • 2022-01-10
      • 2021-09-07
      相关资源
      最近更新 更多