您的位置:首页 > 其它

调整数组顺序使得奇数位于偶数前面,且奇数与奇数,偶数与偶数之间的位置相对不变

2017-10-25 11:42 393 查看
package com.dixin.temp;

import org.junit.Test;

/**
* Created by admin on 2017/10/23.
*/
public class F {
/**
* 调整数组顺序使得奇数位于偶数前面,且奇数与奇数,偶数与偶数之间的位置相对不变
*/
//@1 再创建一个数组  时间复杂度为O(n),空间复杂度为O(n)
public void reOrderArray(int [] array) {
int len=array.length;
int []newArray=new int[len];//定义一个新数组,即为结果数组
int oldCount=0;
int newCount=0;
for(int i=0;i<len;i++) {//遍历数组查找出奇数的数量
if(array[i]%2==1) {
oldCount++;
}
}
for(int i=0;i<len;i++) {
if(array[i]%2==1) {//奇数从前面开始加入
newArray[newCount++]=array[i];
} else {//偶数从刚才查出来的奇数个数的末端开始加入
newArray[oldCount++]=array[i];
}
}
for(int i=0;i<len;i++) {
array[i]=newArray[i];//最终将新数组的值赋给老数组,即完成了奇数位于偶数前面
}
}

//@2 类似于冒泡排序,相邻前偶后奇就交换位置
public void reOrderArray2(int [] array) {
for(int i=0;i<array.length;i++) {
for(int j=array.length-1;j>i;j--) {
if(array[j]%2==1&&array[j-1]%2==0) {//交换位置
int tmp=array[j];
array[j]=array[j-1];
array[j-1]=tmp;
}
}
}
}
@Test
public void test() {
int a[]={4,23,546,87,3,6};
reOrderArray2(a);
for(int b:a) {
System.out.print(b+" ");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐