在知乎上看到这样一段代码,运行提示有bug
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) / 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quicksort(left) + middle + quicksort(right)
print quicksort([3,6,8,10,1,2,1])
有两处错误,其一pivot = arr[len(arr) / 2]
应该改为:pivot = arr[int(len(arr) / 2)]
其二,print的用法没对,应该是加括号,所以修改后的程序为
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[int(len(arr) / 2)]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quicksort(left) + middle + quicksort(right)
print(quicksort([3, 6, 8, 10, 1, 2, 1]))
运行成功:
[1, 1, 2, 3, 6, 8, 10]
Process finished with exit code 0
这里也可以看出,python程序比起c++来说简洁了好多啊!