From 64144c7f38a949aa306acaf9cd9651d5fd725c7f Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Fri, 6 Jan 2023 20:18:45 +0700 Subject: [PATCH] Quicksort in Python --- GrokkingAlgorithms.org | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/GrokkingAlgorithms.org b/GrokkingAlgorithms.org index f8e4c24..7f6c99c 100644 --- a/GrokkingAlgorithms.org +++ b/GrokkingAlgorithms.org @@ -44,3 +44,28 @@ print(sum_rec([1,2,3])) #+RESULTS: : 6 + +** Quicksort + +*** Python +#+begin_src python +import random + +def quicksort(arr): + if len(arr) < 2: + return arr + elif len(arr) == 2: + if arr[0] > arr[1]: + temp = arr[1] + arr[1] = arr[0] + arr[0] = temp + return arr + else: + # Pick a random pivot + index = random.randrange(0, len(arr)) + pivot = arr.pop(index) + left = [x for x in arr if x <= pivot] + right = [x for x in arr if x > pivot] + return quicksort(left) + [pivot] + quicksort(right) +#+end_src +