剑指Offer:调整数组中的数据
2016-08-25 11:32
183 查看
题目是:输入一个整数数组,实现一个函数来调整数组中的数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组后半部分。
使用函数指针的好处在于,相似的处理可以实现代码复用。比如现在需要调整为前半部分为3的倍数,后半部分不是3的倍数等。只需要传一个判断int 数据是否为3的倍数的函数即可。
bool isEven(int n){ return (n & 1) == 0; } void Reorder(int *pData,unsigned int length,bool (*func)(int)){ if(pData == NULL || length <= 0){ return; } int* pBegin = pData; int* pEnd = pData + length - 1; while(pBegin < pEnd){ while( pBegin < pEnd && !func(*pBegin)){ pBegin ++; } while( pBegin < pEnd && func(*pEnd)){ pEnd --; } if(pBegin < pEnd){ int temp = *pBegin; *pBegin = *pEnd; *pEnd = temp; } } } void ReorderOddEven(int *pData,unsigned int length){ Reorder(pData,length,isEven); }
使用函数指针的好处在于,相似的处理可以实现代码复用。比如现在需要调整为前半部分为3的倍数,后半部分不是3的倍数等。只需要传一个判断int 数据是否为3的倍数的函数即可。
相关文章推荐
- 【剑指offer】调整数组顺序
- 剑指offer 3.3 代码的完整性4-在O(n)时间内调整数组顺序,使奇数位于偶数前面
- 剑指offer-第三章高质量的代码(调整数组顺序使得奇数位于偶数的前面)
- 【剑指Offer学习】【面试题14 :调整数组顺序使奇数位于偶数前面】
- 剑指OFFER之调整数组顺序使奇数位于偶数前面找(九度OJ1516)
- 剑指Offer之 - 调整数组顺序使奇数位于偶数前面
- 剑指offer 14 - 调整数据顺序使奇数位于偶数前面
- 剑指Offer-->调整数组顺序使奇数位于偶数前面,并按顺序排列(2种方法)
- 【剑指Offer面试题】 九度OJ1516:调整数组顺序使奇数位于偶数前面
- 剑指offer 调整数组的顺序使奇数位于偶数前面
- 剑指offer--调整数组顺序使奇数位于偶数前面
- 剑指Offer:面试题14 调整数组顺序使奇数位于偶数掐面
- 【剑指offer】面试题14、调整数组顺序使奇数位于偶数前面
- 剑指 offer set 7 调整数组顺序使奇数位于偶数前面
- 剑指offer 2.3 数据结构1-数组求sizeof()
- 【剑指Offer面试编程题】题目1516:调整数组顺序使奇数位于偶数前面--九度OJ
- 【剑指Offer面试编程题】题目1516:调整数组顺序使奇数位于偶数前面--九度OJ
- 剑指offer-面试题14.调整数组顺序使奇数位于偶数的前面
- 【剑指offer 面试题14】调整数组顺序使奇数位于偶数前面
- [剑指offer][面试题14]调整数组顺序使奇数位于偶数前面