有些个算法对有序的和无序的数据都能应用,但多数情况下,他们在输入数据有序时才最有用。
下列算法要求输入数据必须有序:
这些算法要求保证时间复杂度为线性,所以输入数据必须有序。
这两个算法内部使用 merge sort 来完成运算且要求线性时间,也要求输入必须有序。
也要求线性时间,输入须有序。
下列算法要求对数据顺序无强制要求,但最好有序:
unique_copy
STL 允许我们自己定义排序算法,为了让程序正确的运行,我们必须保证排序时候所用的比较算法和上述的算法中使用的比较算法相同,例如下面的例子中:
试图从降序排列的数据中按照升序算法去找一个数据,很有可能会出问题,而下面的表达式中,在 binary_search 中指定比较算法为排序算法中所使用的比较算法,则没有问题: