我是靠谱客的博主 酷酷金鱼,最近开发中收集的这篇文章主要介绍C++求次最值,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

     首先在main方法里面定义一个整型数组,然后调用getMin()方法,getMin方法首先传入两个参数(一个是数组参数,另一个是数组长度),在方法里面通过for    if     来判断!先是求出最值的下标,然后把最值下标i赋值给b,再判断buf[i]!=buf[b]后,再继续便利这个没有最小值的数组,再将这个没有最小值的数组再求最小值就得到了次最值!

#include<iostream>
using namespace std;

/*
功能:求最小值
函数名:getMin
返回值类型:int
*/

int getMin(int buf[100],int ilen)
{
	//buf[0]=999;
	int listen=0;
	int b=0;
	for(int i=0;i<9;i++)
	{
		if(buf[b]>buf[i])
		{
			 b=i;
		}
		if(buf[i]!=buf[b])
		{
			for(int y=0;y<9;y++)
			{
				if(buf[listen]>buf[i])
				{
					listen=i;
				}
			}
		}
	}
	return buf[listen];
}

int main()
{
	//定义一个整型数组
	int buf[100]={11,9,2,5,4,33,6,8,7};
	cout<<"调用之前:buf[0]="<<buf[0]<<endl;
	//调用函数:
	cout<<getMin(buf,9)<<endl;
	//cout<<"调用之后:"<<buf[0]<<endl;
}

第二种方法.

#include<iostream>
using namespace std;
//求次大值的元素

int GetS(int buf[100],int ilen)
{
	    int mlisten,i,slisten;	//最大值
	    for(i=0,mlisten=0,slisten=0;i<ilen;i++)
	    {
		    if(buf[mlisten]<buf[i])
		    {
		    	slisten=mlisten;	//之前的最大值成为次大值
		    	mlisten=i;
		    }
		    else if(buf[i]>buf[slisten])     //如果新元素比最大值小
		    {
		    	slisten=i;
		    }
        }
	return slisten;
}

//求次大值
int GetS(double buf[100],int ilen)
{
	int mlisten,i,slisten;	//最大值
	for(i=1,mlisten=0,slisten=0;i<ilen;i++)
	{
		if(buf[mlisten]<buf[i])
		{
			slisten=mlisten;	//之前的最大值成为次大值
			mlisten=i;
		}
		else if(buf[i]>buf[slisten] || slisten==mlisten)   //如果新元素比最大值小
		{
			slisten=i;
		}
	}
	return slisten;
}

//主函数
int main()
{
	int buf[100]={1,2,6,5,3,4,7,9,8};

	double score[100]={99.9,98.1,78.9,58.9};
	//调用函数
	cout<<GetS(buf,9)<<endl;
	cout<<score[GetS(score,4)]<<endl;
}

最后

以上就是酷酷金鱼为你收集整理的C++求次最值的全部内容,希望文章能够帮你解决C++求次最值所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部