/*************************************************************************
*
* 函数名称:
* GetMedianValue()
*
* 参数:
* BYTE * pArray - 指向要获取中值的数组指针
* int iLength - 数组长度
*
* 返回值:
* BYTE - 返回指定数组的中值。
*
* 说明:
* 该函数用冒泡法对一维数组进行排序,并返回数组元素的中值。
*
************************************************************************/
BYTE GetMedianValue(BYTE * pArray, int iLength)
{
// 循环变量
int i;
int j;
// 中间变量
BYTE bTemp;
// 用冒泡法对数组进行排序
for (j = 0; j < iLength - 1; j ++)
{
for (i = 0; i < iLength - j - 1; i ++)
{
if (pArray[i] > pArray[i + 1])
{
// 互换
bTemp = pArray[i];
pArray[i] = pArray[i + 1];
pArray[i + 1] = bTemp;
}
}
}
// 计算中值
if ((iLength & 1) > 0)
{
// 数组有奇数个元素,返回中间一个元素
bTemp = pArray[(iLength + 1) / 2];
}
else
{
// 数组有偶数个元素,返回中间两个元素平均值
bTemp = (pArray[iLength / 2] + pArray[iLength / 2 + 1]) / 2;
}
// 返回中值
return bTemp;
}