【小知识】站在前人的肩膀上写程序——STL库初阶算法函数的使用

【小知识】站在前人的肩膀上写程序——STL库初阶算法函数的使用

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也提供了maxmin函数。

    如果想要实现找多个数中的最大/最小值,可以使用类似打擂台的方法。

    先设置一个很小(找最大值)/很大(找最小值)的初始值,即擂主。然后循环遍历数组更新擂主,即答案。分装好的函数如下:

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;//越小越靠前
}

喜欢就订阅此专辑吧!

【蓝胖子编程教育简介】
蓝胖子编程教育,是一家面向青少年的编程教育平台。平台为全国青少年提供最专业的编程教育服务,包括提供最新最详细的编程相关资讯、最专业的竞赛指导、最合理的课程规划等。本平台利用趣味性和互动性强的教学方式,旨在激发孩子们对编程的兴趣,培养他们的逻辑思维能力和创造力,让孩子们在轻松愉快的氛围中掌握编程知识,为未来科技人才的培养奠定坚实基础。

欢迎扫码关注蓝胖子编程教育
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值