这是我在维基百科上找到的 Python 快速排序的源代码。
def pivot(v, left, right):
i = left
for j in range(left + 1, right + 1):
if v[j] < v[left]:
i += 1 # .. incrementa-se i
v[i], v[j] = v[j], v[i]
v[i], v[left] = v[left], v[i]
return i
def qsort(v, left, right):
if right > left:
r = pivot(v, left, right)
qsort(v, left, r - 1)
qsort(v, r + 1, right)
a = [4,2,4,6,3,2,5,1,3]
qsort(a, 0, len(a)-1)
print a # prints [1, 2, 2, 3, 3, 4, 4, 5, 6]
我的问题是关于范围的。当我在上面的示例中将 a 作为参数传递时,函数 qsort 如何可能在全局范围内更改变量 a 如果它不'调用''全局a'?我已经用 python 编程了 1 年,最近开始学习 C。看起来我有点困惑。 谢谢
请您参考如下方法:
它不会重新绑定(bind) a/v,它只是改变它。如果您要改变绑定(bind)到的对象,则无需声明名称 global。
