http://blog.csdn.net/hackbuteer1/article/details/8035261#comments
快速找出一個數組中的最大數、第二大數
思路:如果目前元素大于最大數 max,則讓第二大數等于原來的最大數 max,再把目前元素的值賦給 max。
如果目前的元素大于等于第二大數secondMax的值而小于最大數max的值,則要把目前元素的值賦給 secondMax。
#include <iostream>
using namespace std;
void GetSecondMaxNumber(int *, int);
void main(void)
{
int arr[10] = {1,3,5,7,9,0,9,7,3,6};
GetSecondMaxNumber(arr,10);
cout<<endl;
int max = 0x80000000;
cout<<"max = "<<max<<endl; //-2147483648
cout<<"max -1 = "<<max -1<<endl; // 2147483648
}
void GetSecondMaxNumber(int *arr , int n)
{
int i , max , second_max;
max = arr[0];
second_max = 0x80000000; // 這個數是?
for(i = 1 ; i < n ; ++i)
{
if(arr[i] > max)
{
second_max = max;
max = arr[i];
}
else if(arr[i]<max) // 如果直接是 else {} ...則遇到并列的....
{
if(arr[i] > second_max)
second_max = arr[i];
}
}
cout<<max<<" "<<second_max<<endl;
}
