首页 > 代码库 > 将整数数组按就分成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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。