天天看點

快速找出一個數組中的最大數、第二大數

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;
}
           
快速找出一個數組中的最大數、第二大數