剑指Offer [13] 调整数组顺序使奇数位于偶数前面

来源:互联网 发布:c语言阶乘怎么写 编辑:程序博客网 时间:2024/06/07 03:16

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

  • 思路:
    • 如果不要求奇数之间、偶数之间顺序不变,那么可以利用快速排序的思想,利用双指针交换奇数偶数位置即可
    • 此题要同时保证奇数、偶数之间的相对顺序,这就要用到直接插入排序**算法了
package A13调整数组顺序使奇数位于偶数前面;import java.io.BufferedWriter;public class Solution {    public void reOrderArray(int[] array) {        if (array.length == 0 || array == null) {            return;        }        int i = 0;        int j;        while (i < array.length) {            while (i< array.length && isOdd(array[i])) {                i++;            }            j = i + 1;            while ( j<array.length&& !isOdd(array[j])) {                j++;            }            if (j < array.length) {                int temp = array[j];                for (int k = j - 1; k >= i; k--) {                    array[k + 1] = array[k];                }                array[i++] = temp;            } else {                break;            }        }    }    public boolean isOdd(int a) {        return (a & 1) != 0;    }    public static void main(String[] args) {        Solution solution = new Solution();        int[] array = {1,2,3,4,5,6,7};        solution.reOrderArray(array);    }}
阅读全文
0 0