import java.util.ArrayList;
import java.util.List;
/**
* 题目描述
* 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,
* 使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,
* 并保证奇数和奇数,偶数和偶数之间的相对位置不变。
* @author Administrator
*
*/
public class 调整数组顺序使奇数位于偶数前面 {
public static void main(String[] args) {
int []num = {1,2,3,4,5,6,7,8};
List<Integer> list = new ArrayList<Integer>();
//list = numExc(num);
numExp2(num);
for(Integer x : num){
System.out.print(" "+ x);
}
}
/**
* 方法一:用list的集合将奇数放到一个集合中,偶数放到另外一个集合集合中,然后合并;但需要额外的空间,时间复杂度为O(n)
* @param num
* @return
*/
public static List<Integer> numExc(int[] num){
List<Integer> list = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<Integer>();
for(int i = 0 ; i < num.length ; i ++){
if( num[i] % 2 == 1){
list.add(num[i]);
}else{
list2.add(num[i]);
}
}
//合并
list.addAll(list2);
return list;
}
/**
* 方法二:用类似于冒泡方法,不需要额外的空间,但时间复杂度为O(n^2)
*/
public static void numExp2(int[] num){
for(int i =0 ; i < num.length ; i ++){
for(int j = 0 ; j < num.length - 1 ; j ++){
if(num[j] % 2 == 0 && num[j+1] % 2 != 0 ){
int temp = num[j] ;
num[j] = num[j+1];
num[j+1] = temp ;
}
}
}
}
}
算法题之-调整数组顺序使奇数位于偶数前面 第四天(2019/6/2)
最新推荐文章于 2020-02-27 11:42:56 发布