将整数数组按就分成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     

 运行效果:

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

你可能感兴趣的:(java实现)