JAVA常见算法题(二十七)
2017-07-01 11:28
274 查看
题目:给定一个存放整数的数组,请写一个算法,把偶数移动到该数组的右边,奇数放在该数组的左边,请考虑时间和空间的最优算法。
运行结果:
上面第一个关于判断是否为偶数的方法:
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常见排序算法之Shell排序
- java常见的开源算法支持以及java默认支持的provider
- java常见算法
- java:常见加密解密算法的实现:MD5/SHA/HMAC/DES/PBE/AES/RSA/D-H
- 常见图算法总结与Java实现
- java常见算法题目
- JAVA常见算法题(二)
- JAVA常见算法题(八)
- JAVA常见算法题(十五)
- JAVA常见算法题(二十)
- java 垃圾回收算法与常见的垃圾回收器
- java常见的开源算法支持以及java默认支持的provider
- 《深入理解JAVA虚拟机》学习笔记(三)JAVA垃圾收集算法和常见垃圾收集器
- 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)
- JAVA常见的权限控制算法的实现
- JAVA常见算法题(三十四)---计算加密之后的电话号码
- JAVA常见算法题(三)
- JAVA常见算法题(九)
- JAVA常见算法题(十六)
- JAVA常见算法题(三十一)---冒泡排序