14. 调整数组顺序使奇数位于偶数前面
来源:互联网 发布:sql查询语句 编辑:程序博客网 时间:2024/05/24 01:31
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
解析
注意代码的重用性构建。
实现
void ReorderOddEven_1(int *pData, unsigned int length){ //传参有效性判断 if (pData == NULL || length <= 0) return; int* pBegin = pData; int* pEnd = pData + length - 1; while (pBegin < pEnd){ //pBegin向后移动,直到指向偶数 while (pBegin < pEnd && (*pBegin & 0x1) != 0){ pBegin++; } //pEnd向前移动,直到指向奇数 while (pBegin < pEnd && (*pEnd & 0x1) == 0){ pEnd--; } //pBegin<pEnd,交换奇数和偶数 if (pBegin < pEnd){ int tmp = *pBegin; *pBegin = *pEnd; *pEnd = tmp; } }}
代码重用性
void ReorderOddEven_2(int *pData, unsigned int length){ Reorder(pData, length, isEven);}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) { // 向后移动pBegin while(pBegin < pEnd && !func(*pBegin)) pBegin ++; // 向前移动pEnd while(pBegin < pEnd && func(*pEnd)) pEnd --; if(pBegin < pEnd) { int temp = *pBegin; *pBegin = *pEnd; *pEnd = temp; } }}bool isEven(int n){ return (n & 1) == 0;}
0 0
- 14. 调整数组顺序使奇数位于偶数前面
- 【数组3】-调整数组顺序使奇数位于偶数前面
- 数组3:调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面--总结
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面[
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使偶数位于奇数前面
- 如何关闭窗体、线程、应用程序?
- C++ 下的GDI+绘图初始配置
- [POJ 1980] Unit Fraction Partition Dfs
- scala第78讲:Type与Class实战详解
- UI, 猜数字游戏的实现
- 14. 调整数组顺序使奇数位于偶数前面
- 设置一个简单的安卓启动页面
- 欢迎使用CSDN-markdown编辑器
- 代理作用之一代理传值:正向传值
- Android View(一)
- 一个大牛的acm历程(看着就要颤抖)
- 编写简单字符设备驱动
- 大犇心得
- CentOS下安装git