【问题标题】:Selection sort using python3使用python3进行选择排序
【发布时间】:2021-03-09 22:22:52
【问题描述】:
def selection_sort(li):
    new_list = []
    a = li[0]
    for x in range(1, len(li)):
        if li[x] < a:
            a = li[x]
            new_list = a
    print(new_list)


b = [1, 2, 5, 3, 7, 4]
selection_sort(b)

为什么上面的代码返回空列表。 谢谢

【问题讨论】:

  • 您的排序逻辑似乎不正确,您传递了第一个值11 是最小元素,这就是为什么没有附加到您的列表的原因
  • 您的函数不包含 return 语句。它的结果是 None,不是一个空列表。
  • @toRex 对代码进行哪些更改才能使其工作?

标签: python-3.x algorithm sorting selection-sort


【解决方案1】:

使用visualization 了解什么是选择排序。请按照步骤如何使用选择sort

def selection_sort(li):

    for i in range(len(li)): 
        min_idx = i 
        for j in range(i+1, len(li)): 
            if li[min_idx] > li[j]: 
                min_idx = j         
        li[i], li[min_idx] = li[min_idx], li[i]
            
    print(li)

b = [1, 2, 5, 3, 7, 4]
selection_sort(b)

现在,从您的代码角度来看,您的 selection sort 算法不正确。此外,您不需要初始化另一个列表来存储排序元素,而是您的函数参数list 足以存储排序元素。

【讨论】:

  • 链接也不错,可视化确实有助于理解。
猜你喜欢
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多