首页 > 代码库 > 求出整形数组中第二大的数的值

求出整形数组中第二大的数的值

 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初始化为相等且数组最大时,

此算法的结果都会出错,所得结果为最大的数。

特此记录

求出整形数组中第二大的数的值