问题描述
我正在尝试在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}")
,
这是您可以做的事情:
-
U已传递值列表,该值列表作为对该函数的引用传递。 因此您可以期望结果,即您通过->数组的列表中的排序数组。所以 你可以做这样的事情
print(f"Sorted Array: {array}")
-
如果您想保持原始列表不变,请将副本传递给如下所示的函数:
x=selection_sort(array[:])
并通过在末尾添加以下行来从函数中返回值:
return array
并像您在代码中一样打印