C++高手求解在10000个数中找出第二大的数不使用排序法!!
答案:2 悬赏:30
解决时间 2021-12-15 12:55
- 提问者网友:清羽墨安
- 2021-12-15 01:34
C++高手求解在10000个数中找出第二大的数不使用排序法!!
最佳答案
- 二级知识专家网友:温柔刺客
- 2021-12-15 02:12
int a[10000],x1,x2,i;
读入a[]
if(a[0]>a[1]) x1=a[0],x2=a[1];
else x1=a[1],x2=a[0];
for(i=2;i<10000;i++)
if(a[i]>=x1) x2=x1,x1=a[i];
else if(a[i]>x2) x2=a[i];
最后得到x1为最大值,x2为第二大值
这个方法和一遍求最大值是一样的,只是多个判断,并且同时维护两个值
核心代码翻译成自然语言就是:
i从2到10000-1
如果a[i]比当前最大值要大,那么当前第二大值更新为当前最大值,当前最大值更新为a[i](注意当a[i]==x1时也要更新,因为两者相同时可以更新第二大值)
否则a[i]比第二大值大,即a[i]在当前最大和第二大值之间,那么只需要更新第二大的值
读入a[]
if(a[0]>a[1]) x1=a[0],x2=a[1];
else x1=a[1],x2=a[0];
for(i=2;i<10000;i++)
if(a[i]>=x1) x2=x1,x1=a[i];
else if(a[i]>x2) x2=a[i];
最后得到x1为最大值,x2为第二大值
这个方法和一遍求最大值是一样的,只是多个判断,并且同时维护两个值
核心代码翻译成自然语言就是:
i从2到10000-1
如果a[i]比当前最大值要大,那么当前第二大值更新为当前最大值,当前最大值更新为a[i](注意当a[i]==x1时也要更新,因为两者相同时可以更新第二大值)
否则a[i]比第二大值大,即a[i]在当前最大和第二大值之间,那么只需要更新第二大的值
全部回答
- 1楼网友:年轻没有失败
- 2021-12-15 03:15
你好!
利用变量存储第一大,第二大的数,并通过遍历所有的数,将存储的两个数不断更新,最终就能得到最大的数。
希望对你有所帮助,望采纳。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯