输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
方式一:
采用for循环的方式遍历,先把奇数的元素加入数组中,然后再加入偶数元素。
public static int[] exchange(int[] nums) {
if (nums == null || nums.length == 0) {
return null;
}
int[] newNums = new int[nums.length];
int count = 0;
for (int i=0;i< nums.length;i++) {
if (nums[i]%2 == 1) {
newNums[count] = nums[i];
count++;
}
}
for (int i=0;i< nums.length;i++) {
if (nums[i]%2 == 0) {
newNums[count] = nums[i];
count++;
}
}
return newNums;
}
方式二:
使用冒泡的思想,每当是奇数就移动到最前面
public static int[] exchange1(int[] nums) {
int count = nums.length;
// 遍历n次
for (int i=count-1;i>0;i--){
// 从前往后遍历
for (int j=0;j<i;j++) {
// 当前位置是偶数,但是下一个位置元素是奇数,则交换两个元素位置
if (isEven(nums[j]) && !isEven(nums[j+1])) {
swap(nums, j, j + 1);
}
}
}
return nums;
}
private static boolean isEven(int x) {
return x % 2 == 0;
}
private static void swap(int[] nums, int i, int j) {
int t = nums[i];
nums[i] = nums[j];
nums[j] = t;
}
网友评论