将数组的一组数据中的奇数放在前半部分,偶数放在后半部分

来源:互联网 发布:spps统计软件 编辑:程序博客网 时间:2024/04/27 22:01

//将数组中的奇数放在前一部分,偶数放在后一部分

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<assert.h>#include<stdlib.h>void swap(int *x,int *y){    assert(x);    assert(y);    *x ^= *y;    *y ^= *x;    *x ^= *y;}void show(int *arr,int len){    int i = 0;    assert(arr);    for (i = 0; i < len; i++)    {        printf("%d ",arr[i]);    }    printf("\n");}void even_odd_switch(int *arr,int len){    int left = 0;    int right = len - 1;    assert(arr);    assert(len > 0);    while (left < right)    {        while ((left < right) && (arr[left] & 1))//find even number        {               left++;        }        while ((left < right) && (!(arr[right] & 1)))//find odd number        {            right--;        }        if (left < right)        {            swap(arr+left,arr+right);            left++,right--;        }    }}int main(){    int arr[]= {4300,78,45,3,8,45,798,65};    show(arr,sizeof(arr)/sizeof(int));    even_odd_switch(arr,sizeof(arr)/sizeof(int));    show(arr,sizeof(arr)/sizeof(int));    system("pause");    return 0;}

这里写图片描述

0 0
原创粉丝点击