笔试题3——给定一个整形数组,使得奇数在偶数前面
来源:互联网 发布:linux 安装 netstat 编辑:程序博客网 时间:2024/05/04 13:28
这道题是厦门大学某一年的考研题,也是一道笔试时经常考的题目
这道题类似于快速排序 第一趟排玩的结果,将数组分成前后两部分;我们用这种相似的方法解这道算法题
要求:时间复杂度在O(n)内完成,且只能遍历一次,不能重新分配数组
void OddBeforeEven(int a[], int iLength){ if (a == NULL || iLength <= 1) return; int iStart = 0; int iEnd = iLength - 1; while (iStart < iEnd) { while (iStart < iEnd) { if ((a[iStart] & 1) == 0) //从前开始依次判断是否为奇数,直到找到偶数 break; iStart++; } while (iStart < iEnd) { if ((a[iStart] & 1) == 1) //从前开始依次判断是否为偶数,直到找到奇数 break; iEnd--; } if (iStart < iEnd) //交换两个数,位操作效率高些,当然可以定义临时变量 { a[iStart] ^= a[iEnd]; //按位异或 a[iEnd] ^= a[iStart]; a[iStart] ^= a[iEnd]; } }}
代码是不是很舒服
注意:交换两个数,当然可以定义一个临时变量,从而交换两个数,
那如果有面试官问你交换两个数不能定义临时变量或者有没有更高效的方法,
那你可以使用上述的按位异或的方法交换两个数,从而获得面试官的青睐。
阅读全文
0 0
- 笔试题3——给定一个整形数组,使得奇数在偶数前面
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数---百度笔试题
- 排列数组使得偶数在奇数的前面
- 调整数组顺序使得奇数在偶数前面
- 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于偶数前面
- 奇数位于偶数的前面在一个数组中
- 输入一个数组,让所有奇数都在偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 调整数组顺序,使得奇数总位于偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 【剑指offer】调整数组顺序使得奇数位于偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 剑指offer_调整数组顺序使得奇数位于偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 调整数组顺序奇数在偶数前面
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
- 配置nginx反向代理jira并实现https
- 4. 使用postman做接口测试(一)
- 编写你的第一个Django应用, 第一部分
- 学习笔记-散列表
- 动态规划-01背包
- 笔试题3——给定一个整形数组,使得奇数在偶数前面
- 关于Spring Data Redis存储时key value数据的乱码问题
- 【Eternallyc】nefu-120-梅森素数
- [Leetcode] 309. Best Time to Buy and Sell Stock with Cooldown 解题报告
- NYOJ 33. 蛇形填数
- Dijkstra算法的 java 实现
- HDU 6034 & 2017 Multi-University Training Contest
- UIBezierPath 概述
- 关于ipython,小结