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

来源:互联网 发布:如何消除身体疲劳知乎 编辑:程序博客网 时间:2024/05/18 23:25

给定一个存放整数的数组,如何重新排列数组使得数组左边为奇数,右边为偶数?要求:空间复杂度为O(1),时间复杂度为O(n);
代码

#include <iostream>using namespace std;void Swap(int &a,int &b){    int temp = a;    a = b;    b = temp;}void ReverseArray(int arr[],int len){    int begin = 0;    int end = len -1;    while(begin<end)    {        while(arr[begin]%2 == 1&&end>begin)        {            ++begin;        }        while(arr[begin]%2 ==0&&end>begin)        {            --end;        }        Swap(arr[begin],arr[end]);    }}int main(){    int array[] = {1,23,2,34,21,45,26,22,41,66,74,91,17,64};    int len = sizeof(arr)/sizeof(arr[0]);    int i;    ReverseArray(array,len);    for(i = 0;i<len;i++){        printf("%d",array[i]);    }    printf("\n");    return 0;}
阅读全文
0 0
原创粉丝点击