面试题14:调整数组顺序使奇数位于偶数前面
2016-07-05 14:43
417 查看
设置两个指针,分别指向数组的头和尾,交换奇偶
注意几点:
while循环中一定要加上start < end,不然有出边界的可能
判断奇偶可以用位运算效率更高 & 0x1
我的代码:
示例代码:
注意几点:
while循环中一定要加上start < end,不然有出边界的可能
判断奇偶可以用位运算效率更高 & 0x1
我的代码:
void ReorderOddEven_1(int *pData, unsigned int length) { if (pData == NULL || length <= 0) return; int start = 0; int end = length - 1; while (start < end) { while (start < end && pData[start] % 2 != 0) start++; while (start < end && pData[end] % 2 == 0) end--; if (start < end) { int temp = pData[start]; pData[start] = pData[end]; pData[end] = temp; } } }
示例代码:
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 --; if(pBegin < pEnd) { int temp = *pBegin; *pBegin = *pEnd; *pEnd = temp; } } }
相关文章推荐
- 59条令人捧腹但真实的程序员编程语录
- 剑指Offer:面试题7——用两个栈实现队列(java实现)
- Git学习总结(6)——作为一名程序员这些代码托管工具你都知道吗?
- Git学习总结(6)——作为一名程序员这些代码托管工具你都知道吗?
- Git学习总结(6)——作为一名程序员这些代码托管工具你都知道吗?
- Java面试基础概念总结
- 剑指Offer:面试题6——重建二叉树(java实现)
- java 面试题
- 剑指Offer:面试题5——从尾到头打印链表(java实现)
- 面试杂谈
- 程序员分级
- 多一分的信任和多一分的尊重
- Java程序员使用的20几个大数据工具
- 搜房科技面试总结
- Strcpy,memcpy函数的内存重叠
- 剑指offer面试题31连续子数组的最大和
- 剑指Offer:面试题4——替换空格(java实现)
- 黑马程序员_Java基础_我的day01学习笔记
- Android工程师面试题大全
- 面试?顺谈Java程序员学习中各阶段的建议