将整数数组按就分成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实现),布布扣,bubuko.com

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

上一篇:C++成员函数存储


下一篇:c语言中的位移位操作