void ReorderOddEven(int data[], int n)
{
if(data == NULL || n < 2) return;
int left = 0;
int right = n-1;
while(left < right)
{
while(left < right && data[left]&0x01 == 1) ++left;
while(left < right && data[right]^0x01 == 0) -- right;
if(left < right){
int temp = data[left];
data[left] = data[right];
data[right] = temp;
++left;
--right;
}
}
}
void Reorder(int data[], int n, bool (*test)(int ))
{
if( data == NULL || n < 2) return ;
int left = 0;
int right = n-1;
while(left < right){
while(left < right && test(data[left]) == true) ++left;
while(left < right && test(data[right]) == false) --right;
if(left < right){
int temp = data[left];
data[left] = data[right];
data[right] = temp;
++left;
--right;
}
}
}