【问题标题】:Why does my insertion sort function return None?为什么我的插入排序函数返回 None?
【发布时间】:2017-06-02 00:57:29
【问题描述】:

我尝试在 Python 中实现插入排序:

def insert_sort(list):
    y= len(list)
    for b in range(1,y):
        value = list[b]
        a = b-1
        while a>= 0:
            if list[a] > value:
                list[a+1] = list[a]
                list[a] = value
                a = a -1
            else:
                break

li = [34, 55, 4, 455, 556, 33, 2, 54, 6, 8, 1]
l= insert_sort(li)
print (l)

但我不知道它是否有效,因为l 总是出现None。怎么了?

【问题讨论】:

  • 提示:统计return语句的数量。
  • 这不是你的实际问题,但在 Python 中使用 list 作为变量的名称是不好的风格,因为该名称已被内置函数采用。
  • 为什么要退货?它修改了作为参数给出的列表,因此您可以打印li
  • @Barmar 事实上,这就是为什么内置的list.sort() 没有返回任何东西。
  • @torek 计数 0

标签: python insertion-sort


【解决方案1】:

您缺少return 声明:

def insert_sort(list):
    y= len(list)
    for b in range(1,y):
        value = list[b]
        a = b-1
        while a>= 0:
            if list[a] > value:
                list[a+1] = list[a]
                list[a] = value
                a = a -1
            else:
                break
    return list

li = [34, 55, 4, 455, 556, 33, 2, 54, 6, 8, 1]
l= insert_sort(li)
print (l)

【讨论】:

  • 我昨天收到了退货,但仍然没有结果。今天可以操作了!非常感谢你!
猜你喜欢
  • 2019-03-03
  • 2021-11-13
相关资源
最近更新 更多