Java语言将数组中的偶数放在前面,奇数放在后面,通过函数返回,这个怎么写?
Java语言将数组中的偶数放在前面,奇数放在后面,通过函数返回,这个怎么写?
可以写一个排序算法,依次比对两个数,若左偶右奇不做处理,若左奇右偶则互换位置
package com.guli.edu;
import java.util.Arrays;
public class SortArray {
public static void main(String[] args) {
int[] a = {20, 9, 4, 5, 7, 1, 3, 8, 6, 10};
System.out.println(Arrays.toString(sortArrayByParity1(a)));
System.out.println(Arrays.toString(sortArrayByParity2(a)));
}
public static void swap(int[] nums, int i, int j) {//交换函数
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
//偶数放前面,奇数放后面
//第一种方法,[begin,end)
public static int[] sortArrayByParity1(int[] nums) {
int begin = 0;
int end = nums.length - 1;
while (begin < end) {
while (begin < end && nums[begin] % 2 == 0) {
begin++;
}
while (begin < end && nums[end] % 2 != 0) {
end--;
}
swap(nums, begin, end);
}
return nums;
}
//第二种方法[0,jishu),[jishu,i),[i,nums.length)
public static int[] sortArrayByParity2(int[] nums) {
int jishu = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] % 2 == 0) {
swap(nums, jishu, i);
jishu++;
}
}
return nums;
}
}