/*
*用两个指针分别指向数组的头和尾,头指针正向遍历数组,找到第一个偶数,尾指针逆向遍历数组,找到第一个奇数,交换两个指针指向的数字,然后两指针沿着相应的方向 *继续向前移动,重复上述步骤,直到指针大于等于尾指针为止。
*/
#include<stdio.h>
void Swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
void ReverseArray(int *a,int len)
{
int back ;
int head ;
for(head=0,back=len-1;back>0&&head<len&&head<back;)
{
if(a[head]%2==0&&a[back]%2!=0)
Swap(a[head],a[back]);
else
{
if(a[head]%2!=0)
head++;
if(a[back]%2==0)
back--;
}
}
}
int main()
{
int a[]={1,23,2,34,7,212,26,91,9,66,4};
int len=sizeof(a)/sizeof(a[0]);
int i;
printf("原数组为:");
for(i=0;i<len;i++)
{
printf("%d ",a[i]);
}
printf("\n");
ReverseArray(a,len);
printf("经过变换后的数组为:");
for(i=0;i<len;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
重新排列数组使得数组左边为奇数,右边为偶数
最新推荐文章于 2023-01-11 11:20:29 发布