问题描述: 输入一组序列,奇数在前,偶数在后,输出整理后的序列。
解法与分析: 能马上想到用二分法,就很快能解决问题。
参考代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| * 解法:使用二分法 * @param nums */ public static void reorderOddEven(int[] nums) { if(nums==null) { return; } int left=0; int right=nums.length-1; while (left<right) { while (left<right&&nums[left]%2==1) { left++; } while (left<right&&nums[right]%2==0) { right--; } if(left>=right) { break; } exch(nums, left, right); } }
* * @Description: 交换数组中两个数的值 * @param @param nums * @param @param index1 * @param @param index2 * @return void */ private static void exch(int[] nums,int index1,int index2) { if(index1==index2) { return; } nums[index1]^=nums[index2]; nums[index2]^=nums[index1]; nums[index1]^=nums[index2]; }
|