首页 > 代码库 > 将整数数组按就分成2个部分,数组坐标为奇数,右边为偶数(java实现)

将整数数组按就分成2个部分,数组坐标为奇数,右边为偶数(java实现)

方法1:

若不考虑性能:

使用一个新的数组target

遍历原数组 发现奇数则复制到target中 然后偶数 最后显示

 1 import java.util.Arrays; 2  3 public class Sperate_odd_even { 4  5     public static void sperate(int[] a) 6     { 7         int index=0; 8         int[] target=new int[a.length]; 9         for(int i=0;i<a.length;i++)10         {11             if(a[i]%2!=0)12             {13                 target[index]=a[i];14                 index++;15             }16         }17         18         for(int i=0;i<a.length;i++)19         {20             if(a[i]%2==0)21             {22                 target[index]=a[i];23                 index++;24             }25         }26         27         28         29         System.out.println(Arrays.toString(target));30     }31     32     33     public static void main(String[] args) {34         int a[]={2,1,5,3,4,8,12,13,7,77,122};35         System.out.println(Arrays.toString(a));36         sperate(a);37         38         39         40         41         42     }43 44 }

 

 方法2:

 算法时间复杂度为O(n)

使用2个指针不断判断奇偶性 然后互换位置

 1 public static void sperate_two(int[] a) 2     { 3         int i=0;//定义坐标下标 4         int j=a.length-1;//定义右边下标 5         int temp;//跑龙套的 6         while(i<j)//开始遍历 7         { 8             while(a[i]%2!=0)//如果左边遇到奇数则继续遍历 9                 i++;10             while(a[j]%2==0)//同理右边11                 j--;12             13             if(i<j)//交换14             {15                 temp=a[i];16                 a[i]=a[j];17                 a[j]=temp;18             }19         }20         System.out.println(Arrays.toString(a));21     }22