#include<stdio.h>
bool isEven(int n){
return (n&1)==0;
}
void Reorder(int *pData,int length,bool (*fun)(int)){
if(pData==NULL||length==0) return;
int temp;
int *p=pData;
int *q=pData+length-1;
while(p<q){
while(p<q&&!fun(*p))
p++;
while(p<q&&fun(*q))
q--;
temp=*p;
*p=*q;
*q=temp;
}
}
void Print(int* pData,int length){
int* p=pData;
int i=0;
while(i<length){
printf("%3d",*(p+i));
i++;
}
printf("\n");
}
void main(){
int data[]={1,2,3,4,5,6};
Reorder(data,6,isEven);
Print(data,6);
int data_1[]={2,4,6,7,1,3,5};
Reorder(data_1,7,isEven);
Print(data_1,7);
int numbers[] = {2};
Reorder(numbers,1,isEven);
Print(numbers,1);
Reorder(NULL,0,isEven);
Print(NULL,0);
}