为什么在Python中执行Selection Sort时会返回“ None Type”?

问题描述

我正在尝试在Python中实现选择排序算法 由于某些原因,已排序数组以None的形式返回。这是代码

#Selection Sort
def selection_sort(array):
    for i in range(len(array)):
        min_idx = i
        for j in range(i+1,len(array)):
            if array[j]<array[min_idx]:
                min_idx = j
                
        array[i],array[min_idx] = array[min_idx],array[i]
    

array = [1,7,5,3,9]
print(f"Original Array: {array}")

x=selection_sort(array)
print(f"Sorted Array: {x}")

输出

Original Array: [1,9]
Sorted Array: None

解决方法

这是因为您忘记添加return,因此该函数返回None。
该代码对我有用:

#Selection Sort
def selection_sort(array):
    for i in range(len(array)):
        min_idx = i
        for j in range(i+1,len(array)):
            if array[j]<array[min_idx]:
                min_idx = j
                
        array[i],array[min_idx] = array[min_idx],array[i]
    return array
    

array = [1,7,5,3,9]
print(f"Original Array: {array}")

x=selection_sort(array)
print(f"Sorted Array: {x}")
,

这是您可以做的事情:

  1. U已传递值列表,该值列表作为对该函数的引用传递。 因此您可以期望结果,即您通过->数组的列表中的排序数组。所以 你可以做这样的事情

    print(f"Sorted Array: {array}")
    
  2. 如果您想保持原始列表不变,请将副本传递给如下所示的函数:

    x=selection_sort(array[:])
    

    并通过在末尾添加以下行来从函数中返回值:

    return array
    

    并像您在代码中一样打印