//思路一:
//暴力解法
//时间复杂度:O(n)
//空间复杂度:O(n)
//调整数组顺序使奇数位于偶数前面
public void reOrderArray(int [] array) {
if(array==null || array.length==0){
return;
}
int[] newArray = new int[array.length];
int index=0;
for(int i=0;i<array.length;i++){
if(array[i]%2==1){
newArray[index++] = array[i];
}
}
for(int i=0;i<array.length;i++){
if(array[i]%2==0){
newArray[index++] = array[i];
}
}
index=0;
for(int num : newArray){
array[index++] =num;
}
}
@Test
public void test(){
int[] nums={1,2,3,4,5,6,7};
reOrderArray(nums);
}
//思路二:
//利用冒泡排序算法的思想:
//每次将偶数冒到最右边(冒泡排序是稳定排序,不用担心顺序问题)
//注意:冒泡排序中是将数字大的冒出,这里是将偶数冒出
//时间复杂度:O(n^2)
//空间复杂度:O(1)
//调整数组顺序使奇数位于偶数前面
public void reOrderArray(int [] array) {
if(array==null || array.length==0){
return;
}
int n = array.length;
for(int i=n-1;i>=0;i--){
for(int j=1;j<=i;j++){ //相邻元素对比,冒出偶数
if(isEven(array[j-1]) && !isEven(array[j])){
//array[j-1] 是偶数,array[j] 是奇数就交换
swap(array,j-1,j);
}
}
}
}
private void swap(int[] nums,int i,int j){
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
//判断一个数是否是偶数
private boolean isEven(int num){
return (num%2==0);
}
https://www.mianshi.online,https://www.i9code.cn
本文由博客一文多发平台 OpenWrite 发布!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。