首页 > 代码库 > JAVA常见算法题(二十七)
JAVA常见算法题(二十七)
题目:给定一个存放整数的数组,请写一个算法,把偶数移动到该数组的右边,奇数放在该数组的左边,请考虑时间和空间的最优算法。
package com.forezp.util; /** * 题目:给定一个存放整数的数组,请写一个算法, * 把偶数移动到该数组的右边,奇数放在该数组的左边,请考虑时间和空间的最优算法。 * * @author Administrator * */ public class ArrayDemo { //判断是否为偶数 public static boolean isEven(int n){ return (n & 1) == 0 ; } //判断是否为偶数 public static boolean isEven2(int n){ return (n % 2)==0; } //定义算法 public void order(int[] arr){ if(null == arr){ return ; } int i = 0; int j = arr.length - 1 ; while(i<j){ //i是偶数,j是奇数 if(isEven(arr[i]) && !isEven(arr[j])){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; }else if(!isEven(arr[i]) && isEven(arr[j])){ i++; }else if(isEven(arr[i]) && isEven(arr[j])){ j--; }else{ i++; } } } public static void main(String[] args) { ArrayDemo arrayDemo = new ArrayDemo(); int[] arr = {4,3,5,2,10,6,7,22,23,34,45,56}; arrayDemo.order(arr); for (int i : arr) { System.out.println(i); } System.out.println(isEven(1)); System.out.println(isEven(12)); System.out.println(isEven(13)); System.out.println(isEven(14)); System.out.println(isEven(15)); System.out.println("--------------"); System.out.println( 1 & 1); System.out.println( 12 & 1); System.out.println( 13 & 1); System.out.println( 14 & 1); } }
运行结果:
上面第一个关于判断是否为偶数的方法:
JAVA常见算法题(二十七)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。