寻找最快的方法来排序2000个项目的列表,其中包含三个不同的C++值

joh*_*ohn 1 c++ sorting algorithm optimization

基本上,程序将被给予一个项目列表,它们必须被分成三个不同的"箱子".把它想象成你正在整理三种颜色的大理石.这些项都是char类型.谢谢您的帮助.

Kon*_*lph 11

这实际上不是一个经典的"排序"问题...因为只有固定数量的可能值,这被称为分区问题,并且存在一种有效的解决方案,用于称为荷兰标志排序的三向分区,由Edsger Dijkstra提出.

该算法在O(n)中运行,只需要对数组进行一次传递.

通过开发循环不变量也可以相当简单地找到该算法.