1

这是我的代码

count = 0
def selectionSort(data):


    for index in range(len(data)):

        min = index
        count += 1
        # Find the index'th smallest element
        for scan in range(index + 1, len(data)):

            if (data[scan] < data[min]):

                min = scan

        if min != index: # swap the elements
            data[index], data[min] = data[min], data[index]

    return data

data = selectionSort([3,4,5,2,6])


print(count, data)
4

1 回答 1

5

您的代码不应运行。你应该得到local variable 'count' referenced before assignment.

要解决此问题,请将以下内容添加到顶部selectionSort(data)

global count

更好的方法是废弃全局变量并count与排序数据一起返回:

def selectionSort(data):
    count = 0
    for index in range(len(data)):
        min = index
        count += 1
        # Find the index'th smallest element
        for scan in range(index + 1, len(data)):
            if (data[scan] < data[min]):
                min = scan
        if min != index: # swap the elements
            data[index], data[min] = data[min], data[index]
    return count, data

count, data = selectionSort([3,4,5,2,6])
print(count, data)

最后但并非最不重要的一点是,您计算的不是比较。我把修复这个问题留给读者作为练习。

于 2013-11-12T16:56:20.013 回答