C++ · 找最大/最小值

找最大最小值

方法一:擂台思想

这个思路很好理解,找最小值就设一个极大值(如:999999),此后,每输入一个数,就比较它是否比当前最小值小。如是,则它替代最小值;如否,则输入下一个数。(找最大值以此类推)

管你听没听懂,上代码
这种思路的写法如下:

//exam1 找最小值
#include <bits/stdc++.h>
using namespace std;
int n,minn=99999; //n是数字个数,minn表示当前最小值
int main ()
{
    
    
    cin>>n;
    for(int i=1;i<=n;i++){
    
    
        int a; 
        cin>>a; //输入
        if(a<minn) minn=a; //比较
    }
    cout<<minn;
    return 0;
}

运行结果:

而找最大值的代码如下:

//exam2 找最大值
#include <bits/stdc++.h>
using namespace std;
int n,maxn=-99999; //n是数字个数,maxn表示当前最大值
int main ()
{
    
    
    cin>>n;
    for(int i=1;i<=n;i++){
    
    
        int a;
        cin>>a;
        if(a>maxn) maxn=a;
    }
    cout<<maxn;
    return 0;
}


上面的都是基础内容,咱们整点难一点的
比如说,找到最小值的序号

这个可要仔细想想了,我们可以额外设一个变量k,循环时,临时变量i1开始(这是个好习惯,建议养成),每有一次当前的数小于最小值,则k为当前i的值
找最大值反过来就行

代码实现:

#include <bits/stdc++.h>
using namespace std;

int main ()
{
    
    
	int n,s=99999,k=1;//s作比较, n数字个数, k序号 
	cin>>n;
	for(int i=1;i<=n;i++){
    
    
		int a;
		cin>>a; //输入
		if(a<=s){
    
    
			s=a; //最小值
			k=i; //序号
		}	
	}
	cout<<k;
	return 0;
}

方法二:sort排序

这个算是比较方便的方法了,sort函数的用法:
sort(开始位置,结束位置,参数)

其中,参数可以为less<int>()greater<int>(),还可以是其它自定义的函数

C语言默认的排序顺序:从小到大

从小到大排序用less<int>(),从大到小用greater<int>()

cmp自定义排序函数:

bool cmp(int a,int b){
    
    
	return a>b; //从大到小
	return a<b; //从小到大,也可以写成 return b>a;
}

更多示例可以参考我的另一篇文章:sort函数排序详解

那么,找最小值的代码如下:

#include <bits/stdc++.h>
using namespace std;
int a[1005],n;
int main ()
{
    
    
    cin>>n;
    for(int i=1;i<=n;i++){
    
    
        cin>>a[i];
    }
    sort(a,a+n); //sort(a,a+n,less<int>());
    cout<<a[n];
    return 0;
}


sort函数不支持找序号

猜你喜欢

转载自blog.csdn.net/weixin_45122104/article/details/126232260