三个数组求中位数,并且求最后中位数的中位数-----C++算法实现

时间:2023-03-10 02:20:21
三个数组求中位数,并且求最后中位数的中位数-----C++算法实现
文件Median.h
#include <list>
class CMedian
{
public:
explicit CMedian();
virtual ~CMedian();
void getMedian(float& NumberOfMedian); std::list<float> array;
};
文件Median.cpp
#include "Median.h" CMedian::CMedian()
{
} CMedian::~CMedian()
{
} void CMedian::getMedian(float& NumberOfMedian)
{
array.sort();
int n = array.size();
std::list<float>::iterator itr = array.begin();
for(int i = 0;i < n/2; ++i)
itr++;
if(0 == n % 2)
{
NumberOfMedian = (*itr + *(--itr)) / 2;
}
else
{
NumberOfMedian = *itr;
}
}
文件:main.cpp
#include "Median.h"
#include <vector>
#include <iostream> int _tmain(int argc, _TCHAR* argv[])
{
float a[4] = {3,1,9,5};
float b[4] = {8,-1,6,3};
float c[4] = {1,2,4,0};
CMedian *array1 = new CMedian();
CMedian *array2 = new CMedian();
CMedian *array3 = new CMedian();
CMedian *sumArray = new CMedian();
for(int i = 0; i < 4;i++)
{
array1->array.push_back(a[i]);
}
for(int i = 0; i < 4;i++)
{
array2->array.push_back(b[i]);
}
for(int i = 0; i < 4;i++)
{
array3->array.push_back(c[i]);
} float NumberOfMedian1 = 0;
float NumberOfMedian2 = 0;
float NumberOfMedian3 = 0;
array1->getMedian(NumberOfMedian1);
array2->getMedian(NumberOfMedian2);
array3->getMedian(NumberOfMedian3); std::cout<<NumberOfMedian1<<std::endl;
std::cout<<NumberOfMedian2<<std::endl;
std::cout<<NumberOfMedian3<<std::endl; sumArray->array.push_back(NumberOfMedian1);
sumArray->array.push_back(NumberOfMedian2);
sumArray->array.push_back(NumberOfMedian3); float finalMedian = 0;
sumArray->getMedian(finalMedian);
std::cout<<finalMedian<<std::endl;
std::cin>>finalMedian;
return 0;
}

实际图

三个数组求中位数,并且求最后中位数的中位数-----C++算法实现