美文网首页
面试题21:调整数组顺序使奇数位于偶数前面

面试题21:调整数组顺序使奇数位于偶数前面

作者: scott_alpha | 来源:发表于2019-10-07 11:01 被阅读0次

    题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
    思路:构建两个指针P1和P2,P1指向数组头部,P2指向数组尾部。P1向后移动,遇到偶数停下来,P2向前移动,遇到奇数停下来,最后交换P1和P2的数字。重复如上操作,直至P1小于P2。
    解决方案:

    public class Question21 {
        private static boolean isEvent(int n){
            return (n & 1) == 0;
        }
        public static void Reorder(int[] data, int length){
            if (data == null || length == 0){
                return;
            }
            int begin = 0;
            int end = length - 1;
            while (begin < end){
                while (begin < end && !isEvent(data[begin])){
                    begin++;
                }
                while (begin < end && isEvent(data[end])){
                    end--;
                }
                if (begin < end){
                    int tmp = data[begin];
                    data[begin] = data[end];
                    data[end] = tmp;
                }
            }
        }
    
        public static void main(String[] args) {
            int[] data = new int[]{1,2,3,4,5};
            Reorder(data, data.length);
            System.out.println(Arrays.toString(data));
        }
    }
    

    相关文章

      网友评论

          本文标题:面试题21:调整数组顺序使奇数位于偶数前面

          本文链接:https://www.haomeiwen.com/subject/bjtmpctx.html