0

对于我的一生,我不明白为什么会收到此错误:

UnboundLocalError: local variable 'unsorted' referenced before assignment (while len(unsorted) > 0)

对于这段代码,我也知道这不是选择排序的最佳实现:

def selection_sort(arr):
    unsorted = arr[:]
    sorted_arr = []
    while len(unsorted) > 0:
        lowest = arr[0]
        lowest_index = 0
        for i in range(len(unsorted)):
            if arr[i] < lowest:
                lowest = arr[i]
                lowest_index = i

        sorted_arr.append(lowest)
        del(unsorted, lowest_index)
    return sorted_arr
4

2 回答 2

7

您收到此错误是因为:

del(unsorted, lowest_index)

删除这两个变量unsortedlowest_index然后在你的下一个循环回合中,你试图再次使用它们。

于 2013-06-17T10:41:09.833 回答
0

del (unsorted, lowest_index)删除未排序和最低索引。如果您尝试删除 unsorted 中的元素最低索引,请执行以下操作:

del unsorted[lowest_index]
于 2013-06-17T10:50:38.807 回答