從已知長度的數組pwIpd[low~high]找出最大的兩個數pwIpd[*x1]和pwIpd[*x2],要求儘可能減少比較次數,
#define uint16_t unsigned short
#define swap(x,y) {x=x+y;y=x-y;x=x-y;}
void max2(uint16_t *pwIpd,uint16_t low,uint16_t high,uint16_t *x1,uint16_t *x2)
{
uint16_t index;
if(pwIpd[*x1=low] < pwIpd[*x2=low+1])
swap(*x1,*x2);
for(index=low+1;index<=high;index++)
{
if(pwIpd[*x2] < pwIpd[index])
{
*x2 = index;
if(pwIpd[*x2] > pwIpd[*x1])
swap(*x1,*x2);
}
}
}