1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| def quick_sort(collection): """Pure implementation of quick sort algorithm in Python
:param collection: some mutable ordered collection with heterogeneous comparable items inside :return: the same collection ordered by ascending
Examples: >>> quick_sort([0, 5, 3, 2, 2]) [0, 2, 2, 3, 5]
>>> quick_sort([]) []
>>> quick_sort([-2, -5, -45]) [-45, -5, -2] """ length = len(collection) if length <= 1: return collection else: pivot = collection.pop() greater, lesser = [], [] for element in collection: if element > pivot: greater.append(element) else: lesser.append(element) return quick_sort(lesser) + [pivot] + quick_sort(greater)
|