您的位置:首页 > 其它

写一个函数找出一个整数数组中,第二大的数

2013-07-17 12:48 555 查看
刚开始接触这个题的时候,我的脑子快速飞转,但是能想到的是“冒泡排序(由大到小)”,然后取出数组的第二个值。

但是很多其他的情况还是没有考虑的,

1、没有第二大值,也就是这一组数字都一样。

2、第二大值不止一个,

3、考虑到性能方面,冒泡排序性能太低,循环次数太多。

中和以上情况,写出如下算法:

     /// <summary>
/// 找出一个整数数组中,第二大的数
/// </summary>
/// <param name="data">整数数组</param>
/// <param name="count">数组长度</param>
/// <returns>第二大值</returns>
public int Find_Sec_Num(int []data,int count)
{
int max_Num=data[0];
int sec_Max = -32768;
for(int i=0;i<count;i++)
{
if(data[i]>max_Num)
{
sec_Max=max_Num;
max_Num=data[i];
}
else if(data[i]>sec_Max)
{
sec_Max=data[i];
}
}
return sec_Max;
}

/// <summary>
/// 返回信息
/// </summary>
/// <param name="data">数组</param>
/// <param name="count">长度</param>
/// <returns>返回信息</returns>
public string Get_Info(int []data,int count)
{
int secMax = Find_Sec_Num(data, count);
string returnInfo=null;
if (secMax == -32768)
{
returnInfo = "第二大值不存在或为-32768";
}
else
{
returnInfo = "第二大值为" + secMax;
}
return returnInfo;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐