加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

求一个无序数组中的次大数,只遍历一次数组

发布时间:2020-12-14 03:38:31 所属栏目:大数据 来源:网络整理
导读:刚开始我感觉这到问题很简单 ?开始我是这样写的 #includeiostreamusing namespace std ;int secondmax(int data[],int n){int i,max = -32768,max2 = -32768 ;for(i = 0 ; i n ; i++){if(max a[i]){max2 = max ;max = data[i];}}return max2 ;}int main(){in
刚开始我感觉这到问题很简单 ?开始我是这样写的
#include<iostream>
using namespace std ;
int secondmax(int data[],int n)
{
	int i,max = -32768,max2 = -32768 ;
	for(i = 0 ; i < n ; i++)
	{
		if(max < a[i])
		{
			max2 = max ;
			max = data[i];
		}
		
	}
	return max2 ;
}
int main()
{
	int a[10];
	int i ;
	for(i = 0 ; i < 10 ; i++)
	{
		cin>>a[i] ; 
	}
	cout<<secondmax(a,10)<<endl;
}?
之后发现问题了 次代码只支持 有序数组 然后进行改进 
int secondmax(int data[],max2 = -32768 ;
	for(i = 0 ; i < n ; i++)
	{
		if(max < data[i])
		{
			max2 = max ;
			max = data[i];
		}
		else if(data[i]>max2 && data[i]<max) ///这里 && data[i]<max 是为了消除相等的情况 
		{
			max2 = data[i] ; 
		}
	}
	return max2 ;
}
可能还会出现 一组数组中数全部相同情况 总之有很多种情况 我就不考虑了

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读