求出整形数组中第二大的数的值
Posted 凯撒大猩猩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求出整形数组中第二大的数的值相关的知识,希望对你有一定的参考价值。
1 int findsecond(int a[], int size) 2 { 3 int max = a[0]; 4 int second = a[1]; 5 int index = 0; 6 for (int i = 0; i < size; ++i) 7 { 8 if (max < a[i]) 9 { 10 second = max; 11 index = i; 12 max = a[i]; 13 } 14 else if (max > a[i]) 15 { 16 if (second < a[i]) 17 { 18 second = a[i]; 19 index = i; 20 } 21 else if (second > a[i]) 22 { 23 if (second == max) 24 { 25 second = a[i]; 26 index = i; 27 } 28 } 29 } 30 } 31 32 return second; 33 }
index为第二大的数在数组中的下标;
在写算法的过程中,验证发现如果去掉第21行~第28行,
当初始化max和second相等且为整个数组最大,
即a[0]和a[1]相等且为数组最大时,
求出的第二大的数值会出错。
由此发现,去掉上述几行后,max和second初始化为相等且数组最大时,
此算法的结果都会出错,所得结果为最大的数。
特此记录
以上是关于求出整形数组中第二大的数的值的主要内容,如果未能解决你的问题,请参考以下文章
用Java找出一个整数数组中最大的值,并返回最大值的数组下标,尤其是有两个或是三个最大值时