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

来源:互联网 发布:开心消消乐数据同步 编辑:程序博客网 时间:2024/05/18 13:43

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

思路:使用两个指针,前边的指针寻找偶数,后边的指针寻找奇数
若两个指针都找到了目标,就交换两个值,进行交换的时候,需要移动元素,将寻找到的偶数和奇数之间的变量往后移动,再把元素奇数放在第一个位置上。
指针越界则结束遍历。

public class Solution {    public void reOrderArray(int [] array) {        int begin = 0;  //前方指针,寻找的是偶数        int end = 0;    //后方指针,寻找的奇数        while(end < array.length){            //寻找偶数            while(begin < array.length && array[begin] % 2 == 1)                begin++;            //奇数从偶数的下一个位置开始            end = begin;            //寻找偶数之后的奇数            while(end < array.length && array[end] % 2 == 0)                end++;            //交换            if(begin < array.length && end < array.length){                int temp = array[end];                for(int i = end-1; i >= begin ; i--){                    array[i+1] = array[i];                }                array[begin] = temp;                begin++;            }        }    }}
阅读全文
0 0
原创粉丝点击