我正试图在python中实现一种选择排序,到目前为止我已经这样做了。此函数的输出根本没有排序。你觉得我在这里做错了什么?因为我将最小元素的索引存储在数组中并交换它。如果有人能指出我逻辑上的缺陷,这将成为其他人做同样事情的一个例子。
def selection_sort(array):
for i in range(len(array)):
index = 0
smallest = array[i]
for j in range(len(array)):
if array[j] < smallest:
smallest = array[j]
index = j
temp = array[i]
array[i] = smallest
array[index] = temp
return array
to_sort = [99, 44, 6, 2, 1, 5, 63, 87, 283, 4, 0]
print(selection_sort(to_sort))产出: 44、6、2、1、5、63、87、283、4、99、0
发布于 2022-07-07 21:59:52
选择排序从当前索引i向前看,因此内部循环应该只在该范围内迭代。其次,index应该在当前的i中初始化,因为它必须指明smallest来自何处:
def selection_sort(array):
for i in range(len(array)):
index = i # corrected
smallest = array[i]
for j in range(i + 1, len(array)): # corrected
if array[j] < smallest:
smallest = array[j]
index = j
temp = array[i]
array[i] = smallest
array[index] = temp
return arrayhttps://stackoverflow.com/questions/72904645
复制相似问题