Fork me on GitHub

快速排列

快速排列

在书中看到的快速排列算法,给的例子是从索引0开始直接快排,在极端情况下(即数组有序),运行时间会极慢,我把其改成从数组中间开始排序……不知道能不能增加其适用性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from numpy.random import randint


def quicksort(array):
try:
if len(array) < 2:
return array
else:
n = len(array) // 2
pivot = array[n]
array2 = array[:n] + array[n+1:]
less = [i for i in array2 if i <= pivot]
greater = [i for i in array2 if i > pivot]
return quicksort(less) + [pivot] + quicksort(greater)
except Exception as e:
print(e)


if __name__ == '__main__':
l1 = list(randint(0, 100, 30))
print(l1)
print(quicksort(l1))

欢迎投喂,但你的支持就是对我最佳的回馈。