[剑指offer] 调整数组顺序使奇数位于偶数前面 java(三种方法)

本文介绍了三种方法将数组中的元素调整为奇数位于偶数前面:一是创建两个新数组分别存储奇偶数;二是采用类似冒泡排序的方式交换位置;三是使用插入排序策略进行调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 第一种:又新建了两个数组,一个放奇数,一个放偶数

public class Solution {
    public void reOrderArray(int [] array) {
        int[] array1=new int[array.length];
        int[] array2=new int[array.length];
        int length1=0,length2=0;
        int j=0,k=0;
        for(int i=0;i<array.length;i++){
            if(array[i]%2==0){
                array2[j++]=array[i];
                length2++;
            }else{
                array1[k++]=array[i];
                length1++;
            }
        }       
        for(int i=0;i<length1;i++){
            array[i]=array1[i];
        }
        for(int i=0;i<length2;i++){
            array[length1+i]=array2[i];
        }

    }
}

 第二种:类似冒泡排序,两个相邻的整数如果前偶后奇就交换

public class Solution {
    public void reOrderArray(int [] array) {
       for(int i=0;i<array.length;i++){          
           for(int j=0;j<array.length-1;j++){
               if(array[j]%2==0&&array[j+1]%2==1){//前偶后奇
                   int temp=array[j+1];
                   array[j+1]=array[j];
                   array[j]=temp;
               }
           }
       }
    }
}

 第三种:类似插入排序,每次判断已排好的数组后面的第一个数是奇是偶。

public class Solution {
    public void reOrderArray(int [] array) {
       for(int i=1;i<array.length;i++){
           int target=array[i];
           if(array[i]%2==1){
               int j=i;
               while(j>0&&array[j-1]%2==0){
                   array[j]=array[j-1];
                   j--;
               }
               array[j]=target;
           }
       }
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值