数组中元素排列为奇数在前偶数在后

处理流程如下图所示。

对于用例:   1,2,4,5,3

处理结果为:1,3,5,4,2


//将数组a中奇数放在前面,偶数放在后面

-(void)swapArray:(int[])a

{

    int len = sizeof(&a)/sizeof(int);

    if(len <= 0)    //数组长度为0则返回

        return ;

    int front = 0, end = len-1;//设置两个指针,一个指向头部,一个指向尾部

    while(front<end)

    {

        while(front<len && (a[front]&1)==1)    //从前往后找偶数

            front++;

        while(end>=0 && (a[end]&1)==0)    //从后往前找奇数

            end--;

        if(front<end)

        {

            int swap = a[end];    //将奇数往前挪,偶数往后挪

            a[front] = a[end];

            a[end] = swap;

        }

    }

}



猜你喜欢

转载自blog.csdn.net/LIN1986LIN/article/details/79803348