Definition: Pick an element from the array (the pivot), partition the remaining elements into those greater than and less than this pivot, and recursively sort the partitions. There are many variants of the basic scheme above: to select the pivot, to partition the array, to stop the recursion or switch to another algorithm for small partitions, etc.

Generalization (I am a kind of ...)
in-place sort, Las Vegas algorithm when the pivot is picked randomly.

Specialization (... is a kind of me.)
balanced quicksort, multikey Quicksort, introspective sort.

Aggregate parent (I am a part of or used in ...)
q sort.

Aggregate child (... is a part of or used in me.)
partition, divide and conquer, recursion, Select, sublinear time algorithm.

See also external quicksort, dual-pivot quicksort.

Note: Quicksort has running time Θ(n²) in the worst case, but it is typically O(n log n). In practical situations, a finely tuned implementation of quicksort beats most sort algorithms, including sort algorithms whose theoretical complexity is O(n log n) in the worst case.

Select can be used to always pick good pivots, thus giving a variant with O(n log n) worst-case running time.

Newer variants, such as dual-pivot quicksort, are faster because they access less memory.

Author: CM


Robert Sedgewick's talk showing that with Bentley-McIlroy 3-way partitioning Quicksort Is Optimal (C) (pdf format) for random files possibly with duplicate keys; includes discussion and proof. Wikipedia entry with extended discussion and alternatives (C, Python, Haskell, pseudocode). explanation (Java and C++). Flower Brackets explanation, including code and complexity (Java).

More information

Comparison of quicksort, heapsort, and merge sort on modern processors.

Quicksort illustrated through a Hungarian folk dance: Küküllőmenti legényes. Created at Sapientia University.

Go to the Dictionary of Algorithms and Data Structures home page.

If you have suggestions, corrections, or comments, please get in touch with Paul Black.

Entry modified 21 June 2021.
HTML page formatted Mon Jun 21 09:19:53 2021.

Cite this as:
Conrado Martinez, "quicksort", in Dictionary of Algorithms and Data Structures [online], Paul E. Black, ed. 21 June 2021. (accessed TODAY) Available from: