调整数组顺序使奇数位于偶数前面

      前几天做美团的笔试遇到的一道编程题,这是一类问题比如:负数出现在整数前面、小于某个数的出现在前面等等。利用快速排序思想,定义两个指针,初始化时第一个指针指向数组的第一个元素,,第二个指针指向数组最后一个元素;如果第一个指针指向的是偶数,第二个指针指向的数字是奇数,交换两个数字,且第一个指针始终在第二个指针前面。

代码如下:

public void reOrderArray(int a[])
{
    if(a == null)
        return;
    int begin = 0;
    int end = a.length - 1;
    while(begin < end)
    {
        while(begin < end && isOdd(a[begin]))
            begin ++;
        while(begin < end && !isOdd(a[end]))
            end -- ;
        if(begin < end) //交换位置
        {
            int tmp = a[begin];
            a[begin] = a[end];
            a[end] = tmp;
        }
    }
}
public boolean isOdd(int n) // 排序条件
{
    return (n&1) == 0;
}

完成代码这里

原文地址:https://www.cnblogs.com/wxshi/p/5879422.html