数组奇偶

来源:互联网 发布:现已知最大的星球 编辑:程序博客网 时间:2024/06/05 15:29

// 调整数组使奇数全部都位于偶数前面
// 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
// 所有偶数位于数组的后半部分。

#define _CRT_SECURE_NO_WARNINGS 1  #include<stdio.h>  #include<stdlib.h>  void jump_arr(int arr1[],int arr2[],int sz)//数组大小固定,不灵活  {      int i = 0;      for(i=0; i<sz; i++)      {          if(arr1[i]%2==1)          {              *arr2++=arr1[i];          }      }      for(i=0; i<sz; i++)      {          if(arr1[i]%2==0)          {              *arr2++=arr1[i];          }      }  }  int main1()  {      int i = 0;      int arr1[]={1,1,1,4,5,6,7,1,1,1};      int sz = sizeof(arr1)/sizeof(arr1[0]);      int arr2[10] = { 0 };    jump_arr(arr1,arr2,sz);      for(i=0; i<sz; i++)      {          printf("%d ",arr2[i]);      }      printf("\n");      system("pause");      return 0;  }  

方法二:

#define _CRT_SECURE_NO_WARNINGS 1  #include<stdio.h>  #include<stdlib.h>  #include<assert.h>void johh(int *p, int len){    int *left = p;    int *right = p + len - 1;    int temp;    assert(p != NULL);    while (left < right)    {        while ((*left & 1) == 1)        {            left++;        }        while ((*right & 1) == 0)        //等同于while ((*right % 2) == 0)        {            right--;        }        if (left< right)        {            temp = *left;            *left = *right;            *right = temp;        }    }    return;}int main(){    int arr[] = { 1,2,3,4,5,6,7,8,9 };    int len = sizeof(arr) / sizeof(arr[0]);    int i = 0;    johh(arr, len);    for (; i < len; ++i)    {        printf("%d  ", arr[i]);    }    printf("\n");    system("pause");    return 0;}
原创粉丝点击