[C#剑指offer]调整数组使奇数位于偶数前面

    技术2022-07-13  78

    题意:输入一个数组,要求使数组中的奇数部分排列在数组的前半段,偶数数组排列在数组的后半段

    解题思路为数组内创建前后两个指针left和right,出现四种情况时指针进行移动

    arr[left]为奇数,arr[right]为偶数时     left++;right--;arr[left]为奇数,arr[right]为奇数时     left++;arr[left]为偶数,arr[right]为偶数时     right--;arr[left]为偶数,arr[right]为奇数时     指针对应值互换;

    代码如下:

    public static void ReorderArray(int[] arr) { //左边奇数 右边偶数 if (arr == null) return; int i = 0; int j = arr.Length - 1; while (i < j) { if (isEven(arr[i]) && !isEven(arr[j])) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } else if (!isEven(arr[i]) && isEven(arr[j])) { i++; } else if (isEven(arr[i]) && isEven(arr[j])) { j--; } else { i++; j--; } } } public static Boolean isEven(int n) { return (n & 1) == 0; }

     

    Processed: 0.024, SQL: 9