剑指offer——调整数组顺序使奇数位于偶数前面
来源:互联网 发布:吸入麻醉药七氟烷mac值 编辑:程序博客网 时间:2024/06/05 00:31
1. 问题描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
2. 解决办法
这个解决方法应该很容易想到这样一个办法,那就是把奇数先全部找出来,然后把偶数全部找出来,然后把两个数组拼接起来就可以了。
这既是一个非常容易想到的办法,而且也是正常人做这件事情的过程。实际上,这样的时间复杂度是O(n),空间复杂度是O(n),我们一般比较注重时间复杂度,因为就目前情况来看,显然时间更值钱。
具体代码如下:
public static void reOrderArray(int[] array){ int[] odd=new int[array.length]; int[] even=new int[array.length]; int oddnum=0,evennum=0; //找出奇数串,偶数串 for(int i=0;i<array.length;i++){ if(array[i]%2==0){ even[evennum++]=array[i]; } else{ odd[oddnum++]=array[i]; } } //复原数组 for(int i=0;i<oddnum;i++){ array[i]=odd[i]; } for(int i=0;i<evennum;i++){ array[oddnum+i]=even[i]; } }
3. 一点思考
但可能作者的主要意图并不是如此,它等同一个排序算法,也就默认为偶数比奇数“大”,而且要一个稳定的算法。我们可以重新复习一下各种经典排序的时间复杂度与稳定性。
从上表可以看出,只有插入排序和磨泡排序与归并排序可以使用。而最好的归并排序,其时间复杂度为O(
0 0
- 剑指offer:调整数组顺序使奇数位于偶数前面
- 剑指offer--调整数组顺序使奇数位于偶数前面
- 剑指offer 调整数组顺序使奇数位于偶数前面
- 《剑指offer》调整数组顺序使奇数位于偶数前面
- 剑指 offer:调整数组顺序使奇数位于偶数前面
- 剑指offer-调整数组顺序使奇数位于偶数前面
- 剑指offer 调整数组顺序使奇数位于偶数前面
- 剑指offer-调整数组顺序使奇数位于偶数前面
- 剑指offer 调整数组顺序使奇数位于偶数前面
- 【剑指offer】调整数组顺序使奇数位于偶数前面
- [剑指offer]调整数组顺序使奇数位于偶数前面
- 剑指offer:调整数组顺序使奇数位于偶数前面
- 【剑指offer】调整数组顺序使奇数位于偶数前面
- 剑指offer|调整数组顺序使奇数位于偶数前面
- 《剑指offer》调整数组顺序使奇数位于偶数前面
- 剑指Offer:调整数组顺序使奇数位于偶数前面
- 剑指offer - 调整数组顺序使奇数位于偶数前面
- 【剑指offer】调整数组顺序使奇数位于偶数前面
- 笔记1-JAVA的初学浅识
- markdown自动生成导航目录
- poj 3255 次短路问题 Dijkstra 邻接表
- Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
- 监测redis服务器运行情况 哨兵工具
- 剑指offer——调整数组顺序使奇数位于偶数前面
- Java进阶(九)正则表达式
- 欢迎加入XiyouLinuxGroup邮件列表
- myeclipse 调大jvm 内存
- Java内置Logger的项目级完整代码使用流程
- 解决微云登陆出现wns login error的问题
- Makefile学习笔记<显示/隐藏命令 忽略命令错误>
- java线程池
- 编号范围维护综述