0
点赞
收藏
分享

微信扫一扫

题1:调整数组顺序使奇数在前偶数在后

Sky飞羽 2022-03-11 阅读 56

采用快排的算法思想

思路:

我们可以利用两个指针,来优化这个题的解法。第一个指针p1初始化时指向数组的第一个数字即number[0],它只向后移动;第二个指针初始化时指向数组的最后一个数字number[number.length-1],它只向前移动。在两个指针相遇之前,第一个指针总是位于第二个指针的前面。如果第一个指针指向的数字是偶数,并且第二个指针指向的数字是奇数,我们就交换这两个数字。
 

package 分治法;
/**
 * 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有的偶数位于数组的后半部分
 */
import java.util.Arrays;
public class case01_奇数在左 {
    public static void main(String[] args) {
        int[] arr=new int[]{1,3,5,4,8,0,2,9};
        reorderOddEven1(arr);
    }
    static void reorderOddEven1(int []number){
        int len = number.length;
        if(number == null || len == 0){
            return;
        }
        int begin = 0;
        int end = len -1;
        while(begin < end){
            while((begin < end) && (number[begin] & 0x1) != 0){
                ++begin;
            }
            while((begin < end) && (number[end] & 0x1) == 0){
                --end;
            }
            if(begin < end){
                int temp = number[begin];
                number[begin] = number[end];
                number[end] = temp;
            }
        }
        System.out.println("number = " + Arrays.toString(number));
    }
}
举报

相关推荐

0 条评论