标签:void out 一个 ++ star order 数位 题目 move
一、题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
二、思路
设置一个变量start标志为调整好的最后一个奇数的后一个位置,遍历数组,当遍历到奇数时将其置换到start,然后start++。
public class 调整数组顺序使奇数位于偶数前面 {
//将奇数抽到前面
public static void reOrderArray(int [] array) {
int start = 0;//最后一个奇数的后一个位置
for(int i=0;i<array.length;i++){
if(array[i]%2==1){
moveArray(array, start, i);
}
}
}
//将y位置的元素移动到x,然后原本x~y-1的元素向后移动一位
public static void moveArray(int[] array,int x,int y){
int temp = array[y];
for(int i=y;i>x;i--){
array[i] = array[i-1];
}
array[x] = temp;
}
public static void main(String[] args) {
int[] nums = {1,2,3,4,5};
//reOrderArray(nums);
moveArray(nums, 1, 2);
for(int temp:nums){
System.out.print(temp+" ");
}
}
}
标签:void out 一个 ++ star order 数位 题目 move
原文地址:https://www.cnblogs.com/blzm742624643/p/12237652.html