【发布时间】:2015-01-07 18:12:44
【问题描述】:
我在尝试学习数据排序的不同方式时正在研究这个函数,并且我理解了它的主要概念,包括 while 循环。我唯一不明白的是 for 循环在函数第一行的作用。 while 循环不是对列表进行迭代和比较吗?我尝试取出 for 循环,并假设程序无法排序。它运行没有错误,但只是返回了相同的列表,没有改变。如果这对我没有意义,我想我一定不能完全理解这种排序。所以我的问题是:for循环在这个排序函数中的作用是什么?它每次都影响什么?
def selSort(L):
for i in range(len(L) - 1):
minIndex = i
minValue = L[i]
j = i + 1
while j < len(L):
if minValue > L[j]:
minIndex = j
minValue = L[j]
j += 1
temp = L[i]
L[i] = L[minIndex]
L[minIndex] = temp
return L
Q = [2, 8, 5, 9, 1, 15, 3, 7]
selSort(Q)
print Q
输出:
[1, 2, 3, 5, 7, 8, 9, 15]
【问题讨论】:
-
您不能在线性时间内对数组进行排序。对于数组中的每个点,您在 [1..N]、[2..N]、[3..N]、[N,N] 中搜索最小值,while 循环搜索最小值,for 循环使其排序数组。如果您只需要一个 while 循环,您将需要 O(n)!
-
这些都没有帮助,我理解它是选择排序,因此函数名称?而且我问的不是大 O。