(《剑指Offer》笔记)调整数组顺序使奇数位于偶数前面
来源:互联网 发布:商城美工招聘 编辑:程序博客网 时间:2024/06/03 20:56
题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
分析:这是一个将数组按照某个二分法标准分成左右两堆的题目。可以考虑类似快速排序的方法。为了使程序便于扩展,分类标准采用接口。
/** 将数组调整成左奇右偶 * @param data */public void reOrderOddEven(int[] data){reOrder(data,new Stantard(){@Overridepublic boolean isSthByStandard(int n) {// TODO 自动生成的方法存根return (n&0x1)==0;//偶数返回true,奇数返回false}});}/** * 分类标准 */public interface Stantard{boolean isSthByStandard(int n);}/**类似于快速排序(小于枢轴元素放左边,大于枢轴元素放右边),该函数按条件将元素划分成两部分,一些放左边,一些放右边 * @param data */public void reOrder(int[] data,Stantard standard){int first=0,last=data.length-1;while(true){while((first<last)&&!standard.isSthByStandard(data[first]))//左边first++;while((first<last)&&standard.isSthByStandard(data[last]))//右边last--;if(first>=last)break;swap(data,first++,last--);}}/** 交换数组中两个元素的位置 * @param data * @param i * @param j */private void swap(int[] data, int i, int j) {// TODO 自动生成的方法存根int temp=data[i];data[i]=data[j];data[j]=temp;}
0 0
- 剑指offer:调整数组顺序使奇数位于偶数前面
- 剑指offer--调整数组顺序使奇数位于偶数前面
- 剑指offer 调整数组顺序使奇数位于偶数前面
- 《剑指offer》调整数组顺序使奇数位于偶数前面
- 剑指 offer:调整数组顺序使奇数位于偶数前面
- 剑指offer-调整数组顺序使奇数位于偶数前面
- 剑指offer 调整数组顺序使奇数位于偶数前面
- 剑指offer-调整数组顺序使奇数位于偶数前面
- 剑指offer 调整数组顺序使奇数位于偶数前面
- 【剑指offer】调整数组顺序使奇数位于偶数前面
- [剑指offer]调整数组顺序使奇数位于偶数前面
- 剑指offer:调整数组顺序使奇数位于偶数前面
- 【剑指offer】调整数组顺序使奇数位于偶数前面
- 剑指offer|调整数组顺序使奇数位于偶数前面
- 《剑指offer》调整数组顺序使奇数位于偶数前面
- 剑指Offer:调整数组顺序使奇数位于偶数前面
- 剑指offer - 调整数组顺序使奇数位于偶数前面
- 【剑指offer】调整数组顺序使奇数位于偶数前面
- fork与vfork的区别
- 嵌入式动态内存分配过程
- 计算机网络笔试题
- 二叉排序树删除指定结点
- UVA 106 Fermat vs. Pythagoras
- (《剑指Offer》笔记)调整数组顺序使奇数位于偶数前面
- pty/tty设备竞争条件漏洞 (CVE-2014-0196)
- 号段选取应用之已知号码求号段(读书笔记之一)
- 怎么在MyEclipse中修改项目名称(部署)
- Cocos2d-x初入学堂 --> CCMenuItem菜单项
- IO中同步、异步与阻塞、非阻塞的区别
- 常见算法笔试或面试题
- hash表
- Weka算法Classifier-tree-RandomForest源码分析(二)代码实现