【剑指offer-Java版】14调整数组顺序使奇数位于偶数前面
2016-04-25 22:52
501 查看
调整数组顺序使奇数位于偶数前面:遍历交换
特殊输入:
1) 只有一个数字
2) 全奇数或者全偶数
3) 空指针
4) 正常输入
考虑到扩展性,C++里面使用了函数指针来实现,但是对于java,可以采用接口实现 - 思路比较简单
测试代码:
特殊输入:
1) 只有一个数字
2) 全奇数或者全偶数
3) 空指针
4) 正常输入
考虑到扩展性,C++里面使用了函数指针来实现,但是对于java,可以采用接口实现 - 思路比较简单
public class _Q14 { public void ReorderOddEven(int array[]){ if(array == null) return; if(array.length == 1) return; int indexL = 0; int indexR = array.length-1; while(indexL < indexR){ while((array[indexL] & 0x1) == 1 && indexL < indexR) ++indexL; while((array[indexR] & 0x1) == 0 && indexL < indexR) --indexR; int temp = array[indexL]; array[indexL] = array[indexR]; array[indexR] = temp; } } }
测试代码:
public class _Q14Test extends TestCase { _Q14 reOrder = new _Q14(); public void test(){ int array1[] = {}; int array2[] = null; int array3[] = {2}; int array4[] = {2, 1, 3, 4}; int array5[] = {1, 5, 3, 7}; int array6[] = {2, 4, 6, 8}; System.out.println("---------------------------------array1"); CommonUtils.PrintArray(array1); reOrder.ReorderOddEven(array1); CommonUtils.PrintArray(array1); System.out.println("---------------------------------array2"); CommonUtils.PrintArray(array2); reOrder.ReorderOddEven(array2); CommonUtils.PrintArray(array2); System.out.println("---------------------------------array3"); CommonUtils.PrintArray(array3); reOrder.ReorderOddEven(array3); CommonUtils.PrintArray(array3); System.out.println("---------------------------------array4"); CommonUtils.PrintArray(array4); reOrder.ReorderOddEven(array4); CommonUtils.PrintArray(array4); System.out.println("---------------------------------array5"); CommonUtils.PrintArray(array5); reOrder.ReorderOddEven(array5); CommonUtils.PrintArray(array5); System.out.println("---------------------------------array6"); CommonUtils.PrintArray(array6); reOrder.ReorderOddEven(array6); CommonUtils.PrintArray(array6); } }
相关文章推荐
- Javascript获取页面元素相对和绝对位置
- 【剑指offer-Java版】13O(1)时间删除链表结点
- JS实现全屏页面切换
- asp.net EF+MVC+Bootstrap 通用后台管理系统
- js生成指定格式的时间(yyyymmddHHmiss)
- 【步兵 工具篇】 Excel 转 json
- 【剑指offer-Java版】12打印1到最大的n位数
- 【剑指offer-Java版】11数值的整数次方
- RxJS入门(2)---Observable的介绍
- 剑指Offer--二维数组查找
- maven工程如何引用css和js文件
- JSON.parse() 和 JSON.stringify()使用
- JS对DOM节点操作整理
- BZOJ_1015_星球大战_[JSOI2008]_(并查集)
- 剑指offer:二叉搜索树与双向链表
- <jsp:include>标签 和 include 指令的比较
- 放弃jQuery,使用原生js吧!
- 5分钟让你学会用最高效的工具解析所有json
- JS中函数的 this 各种指向
- RxJS入门(1)---Observer 和 Iterator模式简介