题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
import java.util.Arrays;
class Solution13 {
public void reOrderArray(int[] array) {
//输出样子是对的,就是测试不通过--!
int[] arr = new int[array.length];
StringBuffer a = new StringBuffer();
StringBuffer b = new StringBuffer();
for (int i = 0; i <= array.length - 1; i++) {
if (array[i] % 2 == 1) {
a.append(array[i]);
} else if (array[i] % 2 == 0) {
b.append(array[i]);
}
}
String str = a.append(b).toString(); //StringBuffer转String
for (int i = 0; i < str.length(); i++) { //String转数组
// substring是找出包含起始位置,不包含结束位置,到结束位置的前一位的子串
arr[i] = Integer.parseInt(str.substring(i, i + 1));
}
System.out.println(Arrays.toString(arr));
//通过的代码
for(int i= 0;i<array.length-1;i++){
for(int j=0;j<array.length-1-i;j++){
//前偶后奇交换位置
if(array[j]%2==0&&array[j+1]%2==1){
int t = array[j];
array[j]=array[j+1];
array[j+1]=t;
}
}
}
System.out.println(Arrays.toString(array));
}
}
public class TestDemo13 {
public static void main(String[] args) {
Solution13 sol = new Solution13();
sol.reOrderArray(new int[] { 1, 2, 3, 4, 5, 6, 7 });
}
}
//运行结果
[1, 3, 5, 7, 2, 4, 6]
[1, 3, 5, 7, 2, 4, 6]