This paper presents a survey of adaptive quicksort algorithms that improve the quicksort's worst-case behavior when sorting nearly sorted or sorted data. It details several algorithms including bsort, qsorte, nico, and introsort, along with an empirical study comparing their performance in terms of running time and number of comparisons across various data distributions. The results reveal that qsorte generally provides the best performance, particularly for random data, while bsort excels for lists sorted in reverse order up to a certain size.