版权声明:本文为博主原创文章,转载请说明出处 https://blog.csdn.net/qq_31192383/article/details/79003017
在学习CS231n课程的时候,看到作者给的快排示例,觉得特精简,就记下来了。
以前在课本上看到的快排使用循环写的,感觉相对比较复杂,这个递归的思想,虽然代码执行速度上可能没有循环快,但是代码可读性很强,对理解快排也是很有帮助。
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)
#测试
import numpy as np
x = np.random.randint(0, 10000, 10000)
print(x)
print(quicksort(x))
结果如图。