(《剑指Offer》笔记)调整数组顺序使奇数位于偶数前面
2014-09-09 22:28
253 查看
题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
分析:这是一个将数组按照某个二分法标准分成左右两堆的题目。可以考虑类似快速排序的方法。为了使程序便于扩展,分类标准采用接口。
分析:这是一个将数组按照某个二分法标准分成左右两堆的题目。可以考虑类似快速排序的方法。为了使程序便于扩展,分类标准采用接口。
/** 将数组调整成左奇右偶 * @param data */ public void reOrderOddEven(int[] data){ reOrder(data,new Stantard(){ @Override public 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; }
相关文章推荐
- 《剑指Offer》学习笔记--面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer面试题14——调整数组顺序使奇数位于偶数前面
- 剑指offer系列之12:调整数组的顺序使奇数位于偶数前面
- 剑指offer(十四)之调整数组顺序使奇数位于偶数前面
- 【剑指offer系列】 调整数组顺序使奇数位于偶数前面___14
- 剑指offer(Java版):调整数组顺序使奇数位于偶数的前面
- 《剑指Offer》面试题14:调整数组顺序使奇数位于偶数前面
- 剑指offer(07)-调整数组顺序使奇数位于偶数前面【转】
- 剑指offer(10)-调整数组顺序使奇数位于偶数前面
- 【经典算法】:剑指offer(08)-调整数组顺序使奇数位于偶数前面
- 剑指offer_面试题14_调整数组顺序使奇数位于偶数前面(函数指针用法)
- 剑指Offer系列---(17)调整数组顺序使奇数位于偶数前面
- 《剑指offer》——调整数组顺序使奇数位于偶数前面
- 剑指offer(15):调整数组顺序使奇数位于偶数前面
- 剑指offer——调整数组顺序使奇数位于偶数前面
- 剑指offer面试题14(Java版):调整数组顺序使奇数位于偶数的前面
- 剑指offer系列之十二:调整数组顺序使奇数位于偶数前面
- 剑指offer—编程题14(调整数组顺序使奇数位于偶数前面)
- 《剑指offer》调整数组顺序使奇数位于偶数前面
- 九度笔记之 调整数组顺序使奇数位于偶数前面