遍历寻找最大值次大值次次大值

从九月份到现在的十二月份,本人从一个大一小白刚学习到现在变成班级倒数的菜鸡。建议学计算机的准大一新生在暑假可以学了解一些小概念,例如宿舍巨佬在暑假就写博客。现在年级稳居第一!
祝我和所有大学生期末顺利,考出佳绩。
在这里祝大家2020新年快乐!
下面是菜鸡的一段小代码,希望大佬可以纠错或者带带我这只菜鸡!

#include <bits/stdc++.h>//此头文件功能强大,推荐新手可以使用【滑稽】
using namespace std;
int a[10000];//数组放在main函数的外面
int main()
{
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	cin>>a[i];
	sort(a,a+n,greater<int>());
	//algorithm 排序 greater是顺序从大到小排序,不加默认是从小到大
	int max=a[0];//a[0]为已经排好的最大值
	int max_2=0,max_3=0;
	bool in_2=false,in_3=false;
	for(int i=1;i<n;i++)
	{
		if(!in_2&&a[i]<max)
		{
			max_2=a[i];
			in_2=true;//标记已经找到
			continue;//跳出本次循环,进入下一个i
		}
		if(in_2&&a[i]<max_2)
		{
			max_3=a[i];
			in_3=true;
			break;//找到次次大值即停止循环
		}
	}
	if(in_2&&in_3)
	{
		cout<<"最大值:"<<max<<endl;
		cout<<"次大值:"<<max_2<<endl;
		cout<<"次次大值:"<<max_3<<endl;
		
	}
	else if(in_2&&in_3)
	{
		cout<<"最大值:"<<max<<endl;
		cout<<"次大值:"<<max_2<<endl;
		cout<<"不存在次次大值!"<<endl;
		
	}
	else if(!in_2&&!in_3)
	{
		cout<<"只存在最大值:"<<max<<endl;
		cout<<"不存在次大值和次次大值!"<<endl;
		
	}
	return 0;
	//考试的时候还是ac不了 所以还是得用桶排 等我学了再写一篇吧 桶排 ORZ
	
}

//类似桶排但不是真的桶排
#include<iostream>
using namespace std;
int sum=0;
int a[1001]={0};
int main()
{
	for(int i=0;i<1001;i++)
	{
		a[i]=0;
	 } 
	int n,i,t;
	cin>>n;
	for(i=1;i<=n;i++)
	{
		cin>>t;
		a[t]=1;
	}
	for(i=1001;i>=1;i--)
	{
		if(a[i]==1&&sum==0)
		{
			cout<<"最大值:"<<i<<endl;
			++sum;
			continue;	
		}
		else if(a[i]==1&&sum==1)
		{
			cout<<"次大值:"<<i<<endl;
			++sum;
			continue ;
		}
		else if(sum==2&&a[i]==1)
		{
			cout<<"次次大值:"<<i<<endl;
			break;
		}
		else if(a[i]==0&&sum==1&&i==1)
		{
			cout<<"不存在次大值和次次大值!";
		}
		else if(sum==2&&a[i]==0&&i==1)
		{
			cout<<"不存在次次大值!";
		}
	}
}

后面再来一丶有用的小东西

int maxvalue=*max_element(a,a+n);  //找出数组最小值
int minvalue=*min_element(a,a+n);  //找出数组最大值

int maxposition =max_element(a,a+n)-a; //找出数组最大值的下标
int minposition = min_element(a,a+n)-a; //找出数组最小值的下标
int min, max;
int p = 0;
int q = 0;
min = max = a[0];
for (int i = 0; i < n; i++)    //找出数组中最小值的下标
{
    if (a[i] < min)
    min = a[i];
    p = i;
}
for (int i = 0; i < n; i++)   //找出数组中最大值的下标
{
    if (a[i] > max) 
    {
    max = a[i];
    q = i;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值