使用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;
}
版權聲明:拷貝、轉載請附上本文連接