第三节 排序、查找与初始化

  STL指的是C++的标准模板库。使用STL能给我们带来很大的便利,但是它比较复杂,我们只选取一些算法竞赛中常用的STL进行一系列的讲解。首先,我们先学习第一部分。排序和初始化。

排序与查找

  排序与查找是两个对于数据常用的操作。C++给我们提供了sort() 和lower_bound() 两个函数来实现这两个功能,这两个函数都在algorithm头文件中。首先,介绍一下两个函数的参数。

sort(起始地址,终点地址,比较方法);
lower_bound(起始地址,终点地址,查找元素);

  sort() 函数可以对任意对象进行排序,不一定是默认的数据类型。但是,在使用其他类型的时候,我们要首先要对该类型进行“大于”或者“小于”运算进行定义。排序的对象可以存放在数组里,也可以存放在vector中(动态数组,以后会进行讲解)。但是,在使用的细节上有所不同。前者是:sort(a,a+n) 后者是:sort(v.begin(),v.end())。

Lower_bound()

  这个函数的作用是查找“大于或等于x的第一个位置”。

  stable_sort()函数和sort()函数类似,与后者的区别是,排序之后,不改变相同值元素的相对位置。我们称stable_sort()为稳定排序,举个例子,a1,a2,a3,a4,a5是一数组,其中a2=a4,那么经过排序之后是:a1,a2,a4,a3,a5,我们能看到,排序前后a2总是在a4的前面。在数组的排序中,可能效果不太明显,但是如果是对结构体的排序就会有明显的区别。

  使用这两个函数,将会给我们带来很大的便利。不仅缩短了代码的长度,而且可能要比我们所了解的各种排序查找方法更加优秀,无论是时间复杂度或者空间复杂度。

  请练习下面的题目:

    好汉杯积分问题

  请练习下面的题目:

    我要送人头!