前言
众所周知,排序和查找的函数在书写上,永远有那么“一点长”。
手残党在不甚关注算法效率的情况下,可以直接使用头文件<algorithm>。
一、排序
algorithm进行升序排序的函数是sort(,)。
sort内是待排序的区间,其计数器书写分两种情况:
1.若使用<array>头文件,array<int,n> name={},类型的定义方式,则书写为:
sort<a.begin(),a.end()>通过调用arr成员,表示对数组的“从头到尾”都进行排序操作。
2.若使用一般定义方式,a[n]={},则用地址进行排序区间的书写:
sort<a,a+n>表明从a[0]到a[n]进行排序。
如果你不是一个很关注底层的人,这书写简直不要太省事~
但是,有人又会问,如果想要降序排序,我们又将怎么做呢?
当然有方法:对sort的结果使用另一函数——reverse(,)
reverse的书写与sort没有任何区别,但是将二者进行组合后,可以方便的实现降序排序。
二、查找
查找由三大函数:find(),count(),search()组成,我们各个击破。
1.find(,,key)
find的功能是从一个数组(其实vector和list用的更多,但这里按下不表)中找到一个关键字第一次出现的位置,并返回一个地址。
前两个参数与sort的两个参数意义相同。
可以通过这个地址与数组的最后一位地址+1比较(是否相等),判断数组内是否含有这个元素。
(这是因为find会遍历数组,直至找到key或移动出数组的存储空间位置)
2.search(,,,)
这个函数是改版的find,功能是比较两个数组,从而判断一个数组内是否连续含有另一个数组的全部元素,若找到,返回“子数组”的首地址,若找不到,则仅仅遍历整个数组,输出最后一位的地址。
前两个参数和后两个参数分别属于待查数组与key数组的遍历参数,意义与sort的参数相同。
关于他的应用,可以使用指针减法:
int *p=search();
cout<<search()-a.begin();
用这种方法可以输出子数组的位置。
3.count(,,key)
该函数的功能是在一个数组里查找某一关键字出现的总次数。
前两个参数的意义还是老样子,表示查找范围。
该函数返回的是一个整型变量。
小结
虽然使用算法库会让函数的功能与复杂度受限,但它的简便书写依然价值无穷。
the end
参考资料源:www.cplusplus.com
活动地址:CSDN21天学习挑战赛