剑指Offer-14-调整数组顺序使奇数位于偶数之前
来源:互联网 发布:淘宝助手电子面单设置 编辑:程序博客网 时间:2024/04/30 00:08
题目:输入一个整数数组,实现一个函数来调整该数组中的数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
思路:
1、两个指针,1个指向数组前过滤奇数,1个指向数组末尾过滤偶数
2、前向指针不断后移,直至指向偶数或越界
3、后向指针不断迁移,直至指向奇数或越界
#include <iostream>using namespace std;void ReorderOddEven(int *pData, unsigned int length) { if(pData == NULL || length<=0) return; int *pBegin = pData; int *pEnd = pData + length - 1; while(pBegin < pEnd) { //当前指针所指数值为奇数,向后移动,直至指向偶数或到达偶数区临界点 while((*pBegin&0x1) != 0 && pBegin<pEnd) pBegin++; //当前指针所指数值为偶数,向前移动,直至指向奇数或到达奇数区临界点 while((*pEnd&0x1) == 0 && pBegin<pEnd) pEnd--; if(pBegin<pEnd) { int t = *pBegin; *pBegin = *pEnd; *pEnd = t; } }}void print(int *a,int length) { if(a == NULL || length<=0) return; for(int i=0;i<length;i++){ cout<<a[i]<<" "; } cout<<endl;}int main() { //测试实例 //1.奇数全在前,偶数全在后 //2.偶数全在前,奇数全在后 //3.奇偶交叉 //4.一个元素 int a[10] = {1,3,5,7,9,2,4,6,8,10}; int b[10] = {2,4,6,8,10,1,3,5,7,9}; int c[10] = {1,2,3,4,5,6,7,8,9,10}; int d[1] = {1}; ReorderOddEven(a,10); ReorderOddEven(b,10); ReorderOddEven(c,10); ReorderOddEven(d,1); print(a,10); print(b,10); print(c,10); print(d,1); return 0;}
0 0
- 剑指Offer-题14:调整数组顺序使奇数位于偶数之前
- 剑指Offer-14-调整数组顺序使奇数位于偶数之前
- 【剑指 offer】(十四)—— 调整数组顺序使奇数位于偶数之前
- 剑指offer——调整数组顺序使奇数位于偶数之前
- 剑指offer 之 调整数组顺序使奇数位于偶数之前
- 剑指offer:调整数组顺序使奇数位于偶数前面
- 剑指offer--调整数组顺序使奇数位于偶数前面
- 剑指offer 调整数组顺序使奇数位于偶数前面
- 《剑指offer》调整数组顺序使奇数位于偶数前面
- 剑指 offer:调整数组顺序使奇数位于偶数前面
- 剑指offer-调整数组顺序使奇数位于偶数前面
- 剑指offer 调整数组顺序使奇数位于偶数前面
- 剑指offer-调整数组顺序使奇数位于偶数前面
- 剑指offer 调整数组顺序使奇数位于偶数前面
- 【剑指offer】调整数组顺序使奇数位于偶数前面
- [剑指offer]调整数组顺序使奇数位于偶数前面
- 剑指offer:调整数组顺序使奇数位于偶数前面
- 【剑指offer】调整数组顺序使奇数位于偶数前面
- 【UML】UML中的“图”集
- 葛爷带你上iOS王者——03
- 欢迎使用CSDN-markdown编辑器
- Python: scikit-image binary descriptor
- 【Android学习之路】使用AIDL进行跨进程通信
- 剑指Offer-14-调整数组顺序使奇数位于偶数之前
- LEETCODE--Path Sum
- oracle 11G 实验 in 和 exists 区别
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- Timer和TimerTask
- Android逆向之动态调试总结
- hdu 3032(博弈)
- 多线程的创建问题
- vs2012与vs2015