回 帖 发 新 帖 刷新版面

主题:输入三整数,怎么写出寻找中数的一个算法?

请教:输入三整数,试写出寻找中数的一个算法。并回答下列问题:

  在最坏情况下和平均情况下,你的算法分别要做多少次比较?

回复列表 (共5个回复)

沙发

知道的朋友请指教!

板凳

中数是什么?

3 楼

最差情况三次比较
最好情况两次比较

4 楼

////////////////////////////////////////////////////////////////
// 我不知道中数是什么意思,我的理解是这样的:
// 如果输入的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 楼

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);
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册