public static void main(String[] args) {
int[] arr = {1, 2, 5, 2};
System.out.println(Arrays.toString(Find2(arr)));
}
public static int[] Find2(int[] arr) {
int Num;
int ArrLength= arr.length;
int[] class1 = new int[ArrLength];
int[] class2 = new int[ArrLength];
int[] save = new int[2];
Num = Find1(arr);
for (int i = 0; i < 32 ;Num = Num >> (++i)) {
if((Num & 1)==1){
for (int x = 0, y = 0, j = 0; j < ArrLength ; j++) {
if((arr[j]>>i&1) == 0){
class1[x] = arr[j];
x++;
}
if((arr[j]>>i&1) == 1){
class2[y] = arr[j];
y++;
}
}
break;
}
}
save[0]=Find1(class1);
save[1]=Find1(class2);
return save;
}
当Num的值为4时运行 for (int i = 0; i < 32 ;Num=Num>>(++i))以后Num会变成0,把++i改成2以后结果又变成正常的Num的值就是正常的1了。