如何在选择排序中计算这些比较?

时间:2013-11-12 16:50:28

标签: python

这是我的代码

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)

1 个答案:

答案 0 :(得分: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)

最后但并非最不重要的是,你在计算除了比较之外的东西。我把这作为读者练习。