将数组里面的奇数全部排在前面,偶数排在后面

来源:互联网 发布:西南大学西塔学院 知乎 编辑:程序博客网 时间:2024/04/29 21:38

方法一:

声明一个数组,与原来的数组大小一样,遍历原来的数组,把找到的奇数放在前面,找到的偶数放在后面。

#include <iostream>using namespace std;void tiaozheng(int a[],int n){          int i,j,k,m;          int b[100];          k  =0;          m = n-1;          for(i=0;i<n;i++)         {             //if(a[i]%2==1)  if((a[i]&1))             {                  b[k] = a[i];                  k++;             }            else            {                 b[m] = a[i];                 m--;            }         }         for(j=0;j<n;j++)         {            printf("%3d",b[j]);          }}


方法二:采用俩个指针,分别指向第一个位置,和最后一个位置,

当前面的第一个指针遇到了偶数,并且后面一个指针遇到了奇数,那么就把这俩个指针指向的位置进行交换数据。

优点是不用单独声明一个数组。

void tiaozheng(int a[] , int len){int *p1,*p2 ,tmp;p1 = a;p2 = a+len-1;while(p1<p2){if((*p1&1)) //奇数{p1++;continue;}if(((*p2&1)==0)){p2--;continue;}tmp = *p1;*p1 = *p2;*p2 = tmp;}int i;for(i= 0 ;i<len ;i++){printf("%d",a[i]);}}void main(){int a[]={1,2,3,5,4,7};int len;len = sizeof(a)/sizeof(int);tiaozheng(a,len);}


原创粉丝点击