C语言:调整数组使奇数全部都位于偶数前面。

来源:互联网 发布:股票智能交易软件 编辑:程序博客网 时间:2024/05/19 16:22
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<assert.h>void even_old_number(int *arr, int len){     assert(arr);     int i = 0;     int j = 0;     int tmp = 0;     for (i = 0; i < len; i++)     {          while ((arr[i] % 2 == 0) && (i < len))          {               i++;          }          while ((arr[j] % 2 == 1) && (j < len))          {               j++;          }          if (i == len || j == len)               return;          if (i > j)          {               tmp = arr[i];               arr[i] = arr[j];               arr[j] = tmp;               tmp = i;               i = j;               j = tmp;          }     }}int main(){     int arr[] = { 1, 2, 3, 4, 5 };     int len = sizeof(arr) / sizeof(arr[0]);          even_old_number(arr, len);     int i = 0;     for (i = 0; i < len; i++)     {          printf("%d ", arr[i]);     }     system("pause");     return 0;}

另外,方法2也可以,

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>void even_odd(int *arr, int len){    int left = 0;    int right = len - 1;    while (left < right)    {        while((left < right) && (arr[left] % 2 == 1))        {            left++;        }        while((left < right) && (arr[right] % 2 != 1))        {            right--;        }        if (left < right)        {            int tmp = arr[left];            arr[left] = arr[right];            arr[right] = tmp;            left++;            right--;        }    }}int main(){    int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };    int i = 0;    int len = sizeof(arr) / sizeof(arr[0]);    even_odd(arr, len);    for (i = 0; i < len; i++)    {        printf("%d ", arr[i]);    }    printf("\n");    system("pause");    return 0;}


0 0