【小知识】站在前人的肩膀上写程序——STL库初阶算法函数的使用
- 1.墨水瓶算法和swap函数
- 2.打擂台算法和max,min函数
- 3.排序——sort函数
1.墨水瓶算法和swap函数
如果想交换两个墨水瓶的墨水该怎么办呢?我们可以准备第三个墨水瓶。将第一个墨水瓶的墨水倒到空的墨水瓶里,第二个墨水瓶里的墨水倒到第一个墨水瓶里,第三个墨水瓶里的墨水倒到第二个墨水瓶里,这样就完成交换了。
我们可以模拟这个过程,交换两个变量的值,分装后的函数如下:(不懂的先不要管,后面会讲)。
void swap(int& x,int& y)
{
int tmp=x;
x=y;
y=tmp;
}
当然,STL里提供了swap
函数实现这一功能。需要包含algorithm
头文件。
2.打擂台算法和max,min函数
想要找到两数中的较大/较小值,只需要使用max
函数或min
函数就可以了。可以使用三目运算符实现。
int max(int a,int b)
{
return a>b?a:b;
}
int min(int a,int b)
{
return a<b?a:b;
}
在algorithm
头文件中,STL也提供了max
和min
函数。
如果想要实现找多个数中的最大/最小值,可以使用类似打擂台的方法。
先设置一个很小(找最大值)/很大(找最小值)的初始值,即擂主。然后循环遍历数组,更新擂主,即答案。分装好的函数如下:
int max_n=INT_MIN,min_n=INT_MAX;
void find_max(int a[],int n)//n代表数组的长度
{
for(int i=1;i<=n;i++)
max_n=max(a[i],max_n);
}
void find_min(int a[],int n)//n代表数组的长度
{
for(int i=1;i<=n;i++)
min_n=min(a[i],min_n);
}
3.排序——sort函数
如果想要实现对数组的排序,可以简单粗暴地使用STL中的sort
函数,和前面一样,需要包含algorithm
头文件。语法如下:
sort(数组名+起始下表,数组名+终止下标+1,排序规则(函数));
常见的排序规则如下:
选项 | 说明 |
---|---|
equal_to< type >() | 等于 |
not_equal_to< type >() | 不等于 |
less< type >() | 小于 |
greater< type >() | 大于 |
less_equal< type >() | 小于等于 |
greater_equal< type >() | 大于等于 |
比如按从大到小排序
sort(a+1,a+n+1,greater<int>());//假设a是int类型的数组
当然,排序规则也可以不选,默认值为从小到大。
也可以自己定义排序规则函数cmp
,示例如下:
bool cmp(int a,int b)
{
return a<b;//越小越靠前
}
喜欢就订阅此专辑吧!
【蓝胖子编程教育简介】
蓝胖子编程教育,是一家面向青少年的编程教育平台。平台为全国青少年提供最专业的编程教育服务,包括提供最新最详细的编程相关资讯、最专业的竞赛指导、最合理的课程规划等。本平台利用趣味性和互动性强的教学方式,旨在激发孩子们对编程的兴趣,培养他们的逻辑思维能力和创造力,让孩子们在轻松愉快的氛围中掌握编程知识,为未来科技人才的培养奠定坚实基础。
欢迎扫码关注蓝胖子编程教育