直接上代码,代码上面有解释:
精髓就是:从前面找偶数,后面找奇数,找到后相互调换位置
#include<stdio.h>
int main()
{
int arr[] = { 2,3,4,5,7,6,8,9,10,1 };
int i = 0;
int len = sizeof(arr)/sizeof(arr[0]);
int* p1 = arr;
int* p2 = arr + len - 1;
while (p1 < p2)//从左边找偶数右边找奇数,找到后调换
{
while (*p1 % 2 != 0)//左边找偶数
{
p1++;
}
while (*p2 % 2 == 0)//右边找奇数
{
p2--;
}
if (p1 < p2)//一定要确保p1小于p2,这是循环正常运行的必要条件(防止寻找过度)
{
int tep = *p1;
*p1 = *p2;
*p2 = tep;
}
}
for (i = 0; i <len; i++)
{
printf("%d ",arr[i]);
}
return 0;
}