Day 0: Mean, Median, and Mode

内容:


说明:

1、给定N个整数的数组

2、求mean(平均值)、median(中位值、整数数目为单时即中间数目的值,为双时即中间两个数的平均值)、mode(出现次数最多的最小数)

示例代码:

// Day0_MeanMedianandMode.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <map>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

//by zhaocl
int main()
{
    int n;
    int data;
    vector<int> vt;

    double dMean = 0.0, dMedian = 0.0, dSum = 0.0;
    int iMode;

    map<int, int> mMode;
    int value = 1;

    scanf( "%d", &n );

    for( int i = 0; i < n; i++ )
    {
        scanf( "%d", &data );
        vt.push_back( data );
    }

    for( auto i : vt )
    {
        dSum += i;
    }

    //mean
    dMean = dSum / n;
    printf( "%.1f\n", dMean );

    //median
    sort( vt.begin(), vt.end() );

    if( n % 2 == 0 )
    {
        dSum = vt[( n / 2 ) - 1] + vt[n / 2];
        dMedian = dSum / 2;
    }
    else
    {
        dMedian = vt[n / 2];
    }

    printf( "%.1f\n", dMedian );

    //mode
    for( int i = 0; i < n; i++ )
    {
        if( mMode.find( vt[i] ) != mMode.end() )	//find
        {
            int value = mMode.find( vt[i] )->second;
            value++;
            mMode.erase( vt[i] );
            mMode.insert( make_pair( vt[i], value ) );
        }
        else    // not find
        {
            mMode.insert( make_pair( vt[i], 1 ) );
        }
    }

    vector<pair<int, int>> vValue( mMode.begin(), mMode.end() );	//order by dsc

    for( int i = 0; i < vValue.size(); i++ )
    {
        if( vValue[i].second == vValue[0].second )
        {
            if( vValue[0].first > vValue[i].first )
                vValue[0].first = vValue[i].first;
        }
    }

    printf( "%d\n", vValue[0].first );

	/*
	//another better method

	map<int, int> f;

	for( int e : vt )
	{
		f[e]++;
	}

	int mode = 0;

	for( auto e : f )
	{
		if( e.second > f[mode] )
		{
			mode = e.first;
		}
	}

	printf( "%d\n", mode );
	*/
    system( "pause" );
    return 0;
}


知识点:

1、vector、map容器排序

2、map转vector

猜你喜欢

转载自blog.csdn.net/zhao3132453/article/details/80128887
今日推荐