"Quicksort" is a divide and conquer algorithm which relies on a "partition" operation: to partition an array, an element called a "pivot" is selected. All elements smaller than the pivot are moved before it and all greater elements are moved after it. This can be done efficiently in linear time and in-place. The lesser and greater sublists are then recursively sorted. This yields average time complexity of O("n" log "n"), with low overhead, and thus this is a popular algorithm. Efficient implementations of quicksort (with in-place partitioning) are typically unstable sorts and somewhat complex, but are among the fastest sorting algorithms in practice. Together with its modest O(log "n") space usage, quicksort is one of the most popular sorting algorithms and is available in many standard programming libraries.