题目描述:
给定一个整数数组,调整数组元素顺序,使偶数元素在前,奇数元素在后,并且保证原先输入数组的奇数内部顺序及偶数内部顺序不变。例如:输入为{2,1,3,6,4,7,8,5},则输出应该为{2,6,4,8,1,3,7,5}。
输入描述:
第一行:数组的长度n
第二行:输入待排序的数组,用英文逗号分隔
输出描述:
输出排序后的数组,用英文逗号分隔
示例:
输入
8
2,1,3,6,4,7,8,5
输出
2,6,4,8,1,3,7,5
代码如下:
public class demo1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
String[] arr = sc.nextLine().split(",");
String[] res = orderArray(arr);
//打印结果数组
for(int i=0; i<res.length; i++){
if(i == res.length - 1){
System.out.print(res[i]);
}else{
System.out.print(res[i]+",");
}
}
}
public static String[] orderArray(String[] array){
//维护一个左指针变量
int left = 0;
int len = array.length - 1;
for(int i=0; i<=len; i++){
if(Integer.parseInt(array[i]) % 2 == 0){
int j = i;
//将j处的元素前移到left处
while(j > left){
String temp = array[j];
array[j] = array[j-1];
array[j-1] = temp;
j--;
}
left++;
}
}
return array;
}
}
输出结果:(实际测试用例通过100%)