[算法学习]整数序列的奇偶分类

问题描述: 输入一组序列,奇数在前,偶数在后,输出整理后的序列。

解法与分析: 能马上想到用二分法,就很快能解决问题。


参考代码如下

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 (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];
}