首页 > 代码库 > 求出整形数组中第二大的数的值
求出整形数组中第二大的数的值
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初始化为相等且数组最大时,
此算法的结果都会出错,所得结果为最大的数。
特此记录
求出整形数组中第二大的数的值
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。