算法要求:随机给定一个整数数组,设计一个算法,使得数组中奇数都位于偶数前面,并且奇数和偶数的相对位置不变。
思路很简单,先遍历一遍数组,计算出有多少个奇数,奇数+1就是偶数开始存放的位置,然后,创建一个新数组,然后,再遍历一遍数组,遇到奇数就从头添加进新数组,遇到偶数,之前计算出的偶数位置往后添加。
代码:
public static void main(String[] args) {
//随机给定一个整数数组,设计一个算法,使得数组中奇数都位于偶数前面,并且奇数和偶数的相对位置不变
int[] arr=new int[] {1,2,3,4,5,6,7,8,9};
//统计奇数数量
int jiShuNum=0;
for(int i=0;i<arr.length;i++) {
if(arr[i]%2!=0) {
jiShuNum++;
}
}
//定义一个新数组
int[] newArr=new int[arr.length];
//奇数的指针
int ji=0;
for(int i=0;i<arr.length;i++) {
if(arr[i]%2!=0) {
newArr[ji]=arr[i];
ji++;
}else {
newArr[jiShuNum]=arr[i];
jiShuNum++;
}
}
//输出结果
for(int i=0;i<newArr.length;i++) {
System.out.print(newArr[i]);
}
}