算法题
写一个函数找出一个整数数组中,第二大的数
1 #include <stdio.h> 2 3 int max(int a, int b) 4 { 5 return a>b?a:b; 6 } 7 8 int min(int a, int b) 9 { 10 return a<b?a:b; 11 } 12 13 int Find_Second_Max(int data[], int n) 14 { 15 int i; 16 if(n<2) return -1; 17 int max_num = max(data[0],data[1]); 18 int sec_num = min(data[0], data[1]); 19 for(i=2;i<n;i++) 20 { 21 if(data[i]>max_num) 22 { 23 sec_num = max_num; 24 max_num = data[i]; 25 } 26 else if(data[i]>sec_num) 27 { 28 sec_num = data[i]; 29 } 30 } 31 return sec_num; 32 33 } 34 int main() 35 { 36 int data[5] = {2,13,5,17,1}; 37 int sec_num; 38 sec_num = Find_Second_Max(data, 5); 39 printf("%d",sec_num); 40 return 0; 41 }
思路:①先设置好最大和第二大的变量;②i从2开始遍历,有两种情况:一当前元素大于最大值;二当前元素小于最大值大于第二大的值。