主题:输入三整数,怎么写出寻找中数的一个算法?
liuwzpt
[专家分:0] 发布于 2006-09-30 13:55:00
请教:输入三整数,试写出寻找中数的一个算法。并回答下列问题:
在最坏情况下和平均情况下,你的算法分别要做多少次比较?
回复列表 (共5个回复)
沙发
liuwzpt [专家分:0] 发布于 2006-09-30 14:00:00
知道的朋友请指教!
板凳
雨523 [专家分:200] 发布于 2006-09-30 14:25:00
中数是什么?
3 楼
jamesjjx [专家分:0] 发布于 2006-10-04 18:57:00
最差情况三次比较
最好情况两次比较
4 楼
大鹏鸟1海阔天空 [专家分:890] 发布于 2006-10-06 23:44:00
////////////////////////////////////////////////////////////////
// 我不知道中数是什么意思,我的理解是这样的:
// 如果输入的4, 8, 7 那么中数就是7,因为7按大小排列
// 在4和8的中间。 如果是这样的话。我用如下方法解决
// 如果不是,那就见笑了。哈哈................
////////////////////////////////////////////////////////////////
#include <iostream>
using namespace std;
int get_middle(int number1, int number2, int number3);
void main()
{
int middle;
int n1, n2, n3;
cout<<"输入三个整数 "<<endl;
cout<<"第一个整数"<<endl;
cin>>n1;
cout<<"第二个整数 "<<endl;
cin>>n2;
cout<<"第三个整数 "<<endl;
cin>>n3;
middle=get_middle(n1, n2, n3);
cout<<"中数为 "<<middle<<endl;
}
//////////////////////////////////////////////////////////
int get_middle(int number1, int number2, int number3)
{
int temp=number1;
if(temp>=number2 && temp>=number3)
{
if(number2>=number3)
return number2;
else
return number3;
}
else if(temp<=number2 && temp<number3)
{
if(number2>=number3)
return number3;
else
return number2;
}
else
return temp;
}
///////////////////////////////////////////////////
// 这个算法很冗繁的,而且只能解决三个数字(在我的理解下的中数概念)
// 如果数字多了,最好是先做一个排序,把所有的数字按大小顺序排好,
// 直接找出“中数” 来
//////////////////////////////////////////////////////////////////
5 楼
独行者 [专家分:1280] 发布于 2006-10-07 14:28:00
main()
{
int a,b,c,m;
scanf("%d%d%d",&a,&b,&c);
m=a>b?(b>c?b:(a>c?c:a)):(a>c?a:(b>c?b:c));
printf("中数是:%d",m);
}
我来回复