使用c/c++找出一个无序数组中第二大的数
下面是代码:
#include <iostream>
using namespace std;
int Find_second(int* p, int len)
{
//判空
if (NULL==p || len <= 1)
{
return 0;
}
//取数组前两个元素,认为是最大的两个
int max = p[0], second = p[1];
if (max< second)
{
//wap(max, second);
max = p[1];
second = p[0];
}
for (int i = 0; i < len; i++)
{
//如果max不是最大,就更换较大的
if (max < p[i])
{
second = max;
max = p[i];
}
//没有我们初始选的数大,那么对比下第二大的
else if (second<p[i])
{
second = p[i];
}
}
return second;
}
int main()
{
int buf[5] = { 0,2,3,1,5 };
int len = sizeof(buf) / sizeof(int);
int ret = Find_second(buf, len);
if (!ret)
{
cout << "参数错误" << endl;
}
cout << "第二大的数是:" << ret << endl;
}
使用c/c++找出一个无序数组中第二小的数
思路是一样的,只是判断改一下而已。
#include <iostream>
using namespace std;
int Find_second(int* p, int len)
{
//判空
if (NULL==p || len <= 1)
{
return 0;
}
//取数组前两个元素,认为是最小的两个
int min = p[0], second = p[1];
if (min< second)
{
swap(min, second);
//max = p[1];
//second = p[0];
}
for (int i = 0; i < len; i++)
{
//如果max不是最大,就更换较大的
if (min > p[i])
{
second = min;
min = p[i];
}
//没有我们初始选的数大,那么对比下第二大的
else if (second > p[i])
{
second = p[i];
}
}
return second;
}
int main()
{
int buf[5] = { 0,2,3,1,5 };
int len = sizeof(buf) / sizeof(int);
int ret = Find_second(buf, len);
if (!ret)
{
cout << "参数错误" << endl;
}
cout << "第二小的数是:" << ret << endl;
}
版权声明:拷贝、转载请附上本文连接