注册 登录
编程论坛 C++教室

怎样输出其中最大的三个数?程序如图附件,不知道哪里错了

星空下的童话 发布于 2016-11-10 15:22, 1546 次点击
只有本站会员才能查看附件,请 登录
5 回复
#2
夏天的飞鸟2016-11-10 15:44
输出第三个最大数的时候不应该把  i != a && i != b 放在for的判断里面。否则不符合终止循环了
#3
星空下的童话2016-11-10 16:08
回复 2楼 夏天的飞鸟
那应该怎么输出第三大的数呢?
#4
yangfrancis2016-11-10 21:07
先降序排列。然后就很容易找出第三大的了。
#include<algorithm>
bool descend(const int&a,const int&b){return a>b;}
...
sort(C,C+8,descend);
这样数组C会被重新排序,如果不想破坏C的话就复制到另一个数组中再操作。
#5
夏天的飞鸟2016-11-14 08:30
回复 3楼 星空下的童话
按你这方法if(max3 < c[ i ] && i != a && i != b), 我倒觉得三个循环判断大小,效率太低了。还不如先排序
#6
rjsp2016-11-14 20:24
回复 4楼 yangfrancis
应该使用 nth_element 确定前三个数,然后sort前三个数
或者用 priority_queue,一直保持最大的三个
1