您的位置:首页 > Web前端

剑指offer-----调整数组顺序使奇数位于偶数前面

2018-02-01 19:14 218 查看
1、题目:

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。

2、思路:

设置两个指针,第一个指向数组的开头,第二个指向数组的结尾,第一个指针遇到偶数,第二个指针遇到奇数,将两个指针所指的元素交换,第一个指针始终小于第二个指针。代码如下:

public class Solution {

    public void reOrderArray(int [] array) {

        if(array.length == 0){

            return;

        }

        int pBegin = 0;//第一个指针指向序列开头

        int pEnd = array.length - 1;//第二个指针指向序列结尾

        while(pBegin < pEnd){//每次循环交换一次

            while(pBegin<pEnd && (array[pBegin]&1)!=0){//得到前面第一个偶数的序号

                pBegin++;

            }

            while(pBegin<pEnd && (array[pEnd]&1)==0){//得到后面第一个奇数的序号

                pEnd--;

            }

            if(pBegin < pEnd){//将前一个指针所指的元素和后一个指针所指的元素交换

                int temp = array[pBegin];

                array[pBegin] = array[pEnd];

                array[pEnd] = temp;

            }

        }

       

    }

    public static void main(String args[]){

        Solution s = new Solution();

        int array[] = {1,2,3,4,5};

        s.reOrderArray(array);

    }

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: