STL还提供了局部排序算法:partial_sort()和partial_sort_copy()。其原型为:
1.partial_sort()算法
partial_sort()算法的功能是实现对[_First,_Last]内的元素进行排序,排序后[_First,_SortEnd]内的元素处于有序状态。partial_sort()算法还可以使用二元判断式_Comp(elem1,elem2),排序后[_First,_SortEnd]内的元素是有序的。partial_sort()算法仅仅是对容器(序列)中的部分元素进行排序,在需要的情况下,不仅可以节约时间,还不会对剩余元素进行不必要的排序。若参数_SortEnd和参数_Last相等,则可实现对全部元素的排序。
经过partial_sort()算法排序之后的容器(序列)中,有序的元素被放在容器(序列)的前面,非有序的部分放在容器的后面。
partial_sort()算法的默认排序规则是“operator<”。
2.partial_sort_copy()算法
partial_sort_copy()算法将容器(序列)的元素从[_First1,_Last1]复制到目标[_First2,_Last2],同时对这部分元素进行排序。其返回值是“最后一个被复制元素”的下一位置。被排序和复制的元素数量是源区间[_First1,_Last1]和目标区间[_First2,_Last2]两者所含元素数量中较小的那个数量。
若源区间[_First1,_Last1]的元素数量小于目标区间[_First2,_Last2]的元素数量,则容器(序列)中所有元素均参与排序。
partial_sort_copy()算法还可使用二元判断式来指定排序规则。(www.xing528.com)
通过以上阐释可知,对于partial_sort_copy()算法,其功能和partial_sort()算法基本相似,只不过需要指定一个独立的容器去接受复制。目标独立容器中的元素是有序的。
提示
上述几种适用于排序的算法均使用随机访问型迭代器。随机访问型迭代器可以适用于deque型和vector型容器,还适用于普通的C语言数组。
例4-27
例4-27的执行效果如图4-27所示。
图4-27 例4-27的执行效果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。