面试题21:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分, 所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

Posted allen-win

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题21:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分, 所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。相关的知识,希望对你有一定的参考价值。

 

 

/*输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,
所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。*/
public class ReorderArrayOddBeforeEven {
    public static void main(String args[]){
        int intArr[]={3,6,8,12,9,1,5,6,10};
        Solution34 solution34 = new Solution34();
        solution34.reOrderArray(intArr);
        for(int i=0; i<intArr.length; i++){
            System.out.print(intArr[i] +" ");
        }
        System.out.println();
    }

}

class Solution34 {
    public void reOrderArray(int[] array) {
            if(array== null || array.length==0){
                return;
            }
            int i=0,j=0;
            while(j<array.length) {
                while (i<array.length && array[i] % 2 == 1) {
                    i++;
                }
                if(j==0) {
                    j = i;
                }
                while (j<array.length && array[j] % 2 == 0  ) {
                    j++;
                }
                if(j<array.length && j>0) {
                    //所有的偶数后移,奇数移动到原来第一个偶数所在的位置
                    int temp = array[j];
                    for (int k = j - 1; k >= i; k--) {
                        array[k + 1] = array[k];
                    }
                    array[i++] = temp;
                    j++;
                }
            }

    }
}

 

以上是关于面试题21:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分, 所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer面试题21. 调整数组顺序使奇数位于偶数前面

剑指Offer-代码的完整性面试题21:调整数组顺序使奇数位于偶数前面

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

剑指offer编程题Java实现——面试题14调整数组顺序使奇数位于偶数之前

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

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