从效率上看,以下几种sort算法的是一个排序,效率由高到低(耗时由小变大):
partion
stable_partition
nth_element
partial_sort
sort
stable_sort
Effective STL中对如何选择排序函数总结的很好:
1. 若需对vector, string, deque, 或 array容器进行全排序,你可选择sort或stable_sort;
2. 若只需对vector, string, deque, 或 array容器中取得top n的元素,部分排序partial_sort是首选.
3. 若对于vector, string, deque, 或array容器,你需要找到第n个位置的元素或者你需要得到top n且不关系top n中的内部顺序,nth_element是最理想的;
4. 若你需要从标准序列容器或者array中把满足某个条件或者不满足某个条件的元素分开,你最好使用partition或stable_partition;
5. 若使用的list容器,你可以直接使用partition和stable_partition算法,你可以使用list::sort代替sort和stable_sort排序。若你需要得到partial_sort或nth_element的排序效果,你必须间接使用。正如上面介绍的有几种方式可以选择。
partion
stable_partition
nth_element
partial_sort
sort
stable_sort
Effective STL中对如何选择排序函数总结的很好:
1. 若需对vector, string, deque, 或 array容器进行全排序,你可选择sort或stable_sort;
2. 若只需对vector, string, deque, 或 array容器中取得top n的元素,部分排序partial_sort是首选.
3. 若对于vector, string, deque, 或array容器,你需要找到第n个位置的元素或者你需要得到top n且不关系top n中的内部顺序,nth_element是最理想的;
4. 若你需要从标准序列容器或者array中把满足某个条件或者不满足某个条件的元素分开,你最好使用partition或stable_partition;
5. 若使用的list容器,你可以直接使用partition和stable_partition算法,你可以使用list::sort代替sort和stable_sort排序。若你需要得到partial_sort或nth_element的排序效果,你必须间接使用。正如上面介绍的有几种方式可以选择。
本文介绍了不同排序算法的效率,并提供了具体的应用场景建议。包括全排序(sort, stable_sort)、部分排序(partial_sort)、查找第n个元素(nth_element)等算法的选择依据。
477

被折叠的 条评论
为什么被折叠?



