题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序。使得全部奇数位于数组的前半部分。全部偶数位予数组的后半部分。

这个题目要求把奇数放在数组的前半部分, 偶数放在数组的后半部分,因此全部的奇数应该位于偶数的前面。也就是说我们在扫描这个数组的时候, 假设发现有偶数出如今奇数的前面。我们能够交换它们的顺序,交换之后就符合要求了。

因此我们能够维护两个指针,第一个指针初始化时指向数组的第一个数字,它仅仅向后移动:第二个指针初始化时指向数组的最后一个数字, 它仅仅向前移动。

在两个指针相遇之前,第一个指针总是位于第二个指针的前面。假设第一个指针指向的数字是偶数,而且第二个指针指向的数字是奇数,我们就交换这两个数字。

代码实现:

public class Test14 {

    /**
* 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,
* 使得全部奇数位于数组的前半部分,全部偶数位予数组的后半部分。 *
* @param arr 输入的数组
*/
public static void reorderOddEven(int[] arr) {
// 对于输入的数组为空,或者长度小于2的仅仅接返回
if (arr == null || arr.length < 2) {
return;
} // 从左向右记录偶数的位置
int start = 0;
// 从右向左记录奇数的位置
int end = arr.length - 1;
// 開始调整奇数和偶数的位置
while (start < end) {
// 找偶数
while (start < end && arr[start] % 2 != 0) {
start++;
}
// 找奇数
while (start < end && arr[end] % 2 == 0) {
end--;
} // 找到后就将奇数和偶数交换位置
// 对于start=end的情况,交换不会产生什么影响
// 所以将if推断省去了
int tmp = arr[start];
arr[start] = arr[end];
arr[end] = tmp;
}
} /**
* 输出数组的信息
*
* @param arr 待输出数组
*/
public static void printArray(int[] arr) {
if (arr != null && arr.length > 0) {
for (int i : arr) {
System.out.print(i + " ");
}
System.out.println();
}
} public static void main(String[] args) {
int[] array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
reorderOddEven(array);
printArray(array);
}
}

执行结果:

【剑指Offer学习】【面试题14 :调整数组顺序使奇数位于偶数前面】的更多相关文章

  1. 《剑指offer》面试题14 调整数组顺序使奇数位于偶数前面 Java版

    (输入整数数组,使所有奇数位于前半部分,所有偶数位于后半部分.) 我的方法:想到用两个下标分别表示奇数和偶数的界线,一个在开头,一个在末尾,判断每一个数字的类别,然后将它放入对应的范围内,移动下标,直 ...

  2. 【剑指offer】面试题 21. 调整数组顺序使奇数位于偶数前面

    面试题 21. 调整数组顺序使奇数位于偶数前面

  3. 《剑指offer》面试题21. 调整数组顺序使奇数位于偶数前面

    问题描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 示例: 输入:nums = [1,2,3,4] 输出:[1,3,2,4] ...

  4. 剑指offer 13.代码的完整性 调整数组顺序使奇数位于偶数前面

    题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变.   本渣渣解题思路: ...

  5. 剑指Offer(书):调整数组顺序使奇数位于偶数前面

    题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. public void ...

  6. C++版 - 剑指offer面试题14: 调整数组顺序使奇数位于偶数前面

    题目: 调整数组顺序使奇数位于偶数前面 热度指数:11843 时间限制:1秒 空间限制:32768K 本题知识点: 数组 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇 ...

  7. 剑指offer-数值的整数次方-调整数组顺序使奇数位于偶数前面-代码的完整性-python

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方.   保证base和exponent不同时为0   思路 求base的expon ...

  8. 剑指offer编程题Java实现——面试题14调整数组顺序使奇数位于偶数之前

    题目: 输入一个整数数组,实现一个函数来调整该数组中数组的顺序,使得所有的奇数位于数组的前半部分,偶数位于数组的后半部分. 解题思路:数组中维护两个指针,第一个指针初始化时候指向数组头部,第二个指针初 ...

  9. 剑指Offer:面试题14——调整数组顺序使奇数位于偶数前面(java实现)

    问题描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 思路: 1.最简单的想法,不考虑时间复杂度,扫描数组,遇到偶数,先取出这 ...

  10. 剑指offer-面试题14.调整数组顺序使奇数位于偶数的前面

    题目:输入一个整数数组,实现一个函数来调整该数组中的数字的顺序, 使得所有的奇数位于数组的前半部门,所有的偶数位于数组的后半部门. 这一题一看其实是很简单的,当然在不考虑效率的情况可以这样考虑 我们将 ...

随机推荐

  1. C# 两时间,时间间隔

    #region 返回时间差        public static string DateDiff(DateTime DateTime1, DateTime DateTime2)        {  ...

  2. JNI/NDK开发指南(二)——JVM查找java native方法的规则

    通过第一篇文章,大家明白了调用native方法之前,首先要调用System.loadLibrary接口加载一个实现了native方法的动态库才能正常访问,否则就会抛出java.lang.Unsatis ...

  3. bootstrap兼容IE8 解决办法

    bootstrap有使用CSS3,所以ie9以下浏览器不会很顺畅.IE9以下的兼容性不是很好.IE本身就是怪胎,就搞一些和外界标准不一致.搞得web开发考虑这考虑那的兼容性,蛋疼! 基本上css3的没 ...

  4. XXX is not in the sudoers file.This incident will be reported

    在fefora 10安装xz解压软件时,sudo make install 时,报错: 原因未知,在网上搜索为:权限问题,解决办法如下(来自百度): 解决方法如下: >.进入超级用户模式.也就是 ...

  5. Hibernate save或者persist 后获取主键ID

    一个自增长ID的对象被save或者persist后,会返回其主键ID: Department department = new Department(); department.setName(&qu ...

  6. 查看Mac OSX机器上存在的所有Device

    可以使用instruments -s来查看Mac OSX机器上存在的所有Device,包括模拟器创建的Device以及真实连接的iPad,iPhone等设备.

  7. OA学习笔记-001-项目介绍

    基本知识 框架工具 解决方案(经典应用) 项目 12天 ========================================== OA项目, 12天 BBS 一.什么是OA? 辅助管理.提 ...

  8. html表格cell合并插件

    数据展示时需要合并部分数据自己写了一个简单插件 合并前: 合并后: 调用示例: var trs = $('table#dataList tbody tr').not('#demo').get(); v ...

  9. android Theme使用三

    ☆ obtainStyledAttributes参数说明 和使用说明 1)  obtainStyledAttributes(int[]attrs) int[] attrs返回的是attrs.xml里一 ...

  10. Exception Handling Statements (C# Reference)

    Exception Handling Statements (C# Reference) C# provides built-in support for handling anomalous sit ...