Dynamic programing
Computer Algorithms Lecture 11 Sorting in Linear Time Ch. 8 Some of these slides are courtesy of D. Plaisted et al, UNC and M. Nicolescu, UNR.