调整数组顺序使奇数位于偶数前面
题目描述
| 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 |
思路
- 首先建立一个栈,用于存储偶数;然后遍历原数组,遇到奇数则按顺序重新为原数组赋值,遇到偶数则压入栈;最后将栈中的偶数弹出,并依次从原数组最后一个元素开始赋值。

程序
/**
* code1
* 时间复杂度:O(n)
* 空间复杂度:
*/
import java.util.Stack;
public class Solution {
public void reOrderArray(int [] array) {
Stack<Integer> stack = new Stack<Integer>();
if(array.length==0){
return;
}
if(array.length==1){
return;
}
int j=0;
int p=array.length-1;
for(int i=0;i<array.length;i++){
if((array[i]&1)==1){
array[j++]=array[i];
}else{
stack.push(array[i]);
}
}
while(!stack.empty()){
array[p--]=stack.pop();
}
}
}
补充
-
数组输出方式
(1).一维数组:int[] array = {1,2,3,4,5,6};
1). for循环for(int i=0;i<array.length;i++) { System.out.println(a[i]); }2). foreach
for(数据类型 变量|集合){ //循环体代码,循环次数为代码长度 }for(int a:array) System.out.println(a + "、");3). 调用Arrays包
import java.util.Arrays; System.out.println(Arrays.toString(array));(2).二维数组:
int[][]arr = {{1,2,3}, {4,5,6}, {7,8,9}};
1). for循环for(int i=0;i<arr.length;i++) { for(int j=0;j<arr[i].length;j++) { System.out.print(arr[i][j]+" "); } System.out.println(); //换行 }2). foreach
for(int[] a:arr) { for(int b:a) { System.out.print(b+" "); } System.out.println();//换行 }3). 调用Arrays包
import java.util.Arrays; for(int i=0;i<arr.length;i++) System.out.println(Arrays.toString(arr[i])); -
包装 基本数据类型进行包装处理后可以像对象一样进行引用传递,同时可以使用Object类进行接收。java设计了8个包装类,可以分为两种类型:
(1). 对象型包装类(Object直接子类):Boolean(boolean)、Character(char)
(2). 数值型包装类(Number直接子类):Byte(byte)、Short(short)、Integer(int)、Long(long)、Float(float)、Double(double)