重新排列数组使得数组左边为奇数,右边为偶数

来源:互联网 发布:天津网站建设优化 编辑:程序博客网 时间:2024/05/17 22:44
/* *用两个指针分别指向数组的头和尾,头指针正向遍历数组,找到第一个偶数,尾指针逆向遍历数组,找到第一个奇数,交换两个指针指向的数字,然后两指针沿着相应的方向 *继续向前移动,重复上述步骤,直到指针大于等于尾指针为止。*/#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;}

原创粉丝点击