剑指Offer之 - 调整数组顺序使奇数位于偶数前面
2015-05-05 15:43
369 查看
题目:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。思路:
两个指针,一个指向开头,一个指向末尾。代码:
#include<iostream> using namespace std; //功能:把数组里的奇数放在前面,偶数放在后面 //解法1:两个指针,一个在前一个在后 void ReorderOddEven(int *pData , unsigned int length) { if(pData == NULL || length <= 0) return; for(int i = 0 , j = length - 1 ; i < j ; i++ , j--) { while(i < j && (pData[i] & 1) ) { i++; } while(i < j && (pData[j] & 1 == 0)) { j--; } swap(pData[i] , pData[j]); } } //更加通用的解法 typedef bool (*pFunc)(int); void ReorderOddEvenCom(int *pData , unsigned int length , pFunc func) { if(pData == NULL || length <= 0) return; for(int i = 0 , j = length - 1 ; i < j ; i++ , j--) { while(i < j && !func(pData[i])) { i++; } while(i < j && func(pData[j])) { j--; } swap(pData[i] , pData[j]); } } bool isEven(int n) { return (n & 1) == 0; } int main() { int num[8] = {2,4,6,8,1,3,5,7}; ReorderOddEvenCom(num , 8 , isEven); for(int i = 0 ; i < 8 ; i++) { cout<<num[i]<<' '; } cout<<endl; }
相关文章推荐
- 剑指offer 调整数组顺序使奇数位于偶数前面
- 【剑指Offer面试编程题】题目1516:调整数组顺序使奇数位于偶数前面--九度OJ
- 【剑指Offer】调整数组顺序使奇数位于偶数前面 解题报告(Python)
- 剑指Offer——调整数组顺序使奇数位于偶数前面
- 剑指 offer:调整数组顺序使奇数位于偶数前面
- 【剑指offer】面试题14:调整数组顺序使奇数位于偶数前面
- 剑指Offer学习总结-调整数组顺序使奇数位于偶数前面
- 剑指offer----调整数组顺序使奇数位于偶数前面----java实现
- 剑指offer-14:调整数组顺序,奇数位于偶数前面
- 剑指offer-面试题14-调整数组顺序使奇数位于偶数前面
- 剑指offer.14:调整数组顺序使奇数位于偶数前面
- 剑指offer 面试题14—调整数组顺序使奇数位于偶数前面
- 剑指offer 调整数组顺序使奇数位于偶数前面
- (C++)剑指offer-13:调整数组顺序使奇数位于偶数前面(代码的完整性)
- 【剑指Offer面试编程题】题目1516:调整数组顺序使奇数位于偶数前面--九度OJ
- 剑指Offer:调整数组顺序使奇数位于偶数前面
- 剑指Offer--13.调整数组顺序使奇数位于偶数前面
- 剑指offer--调整数组顺序使奇数位于偶数前面
- 剑指Offer:调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面[剑指offer]之python实现