题目:输入一个整数数组,实现一个函数来调整该数组中数字的属性怒,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。

思路:其实就是用快速排序法的第一轮排序,从左右夹逼,左边遇到偶数,停下来,右边遇到奇数,停下来,交换,再夹逼,直到两个指针相遇。
代码实现:
package com.yyq;/*** Created by Administrator on 2015/9/13.*/
public class ReorderArray {public static void reorderOddEven(int[] data){if(data == null) return;int start = 0;int end = data.length - 1;//奇数放前面,偶数放后面while(start < end){while(start < end && (data[start] & 0x1) != 0){start++;}while(start < end && (data[end] & 0x1) == 0){end--;}int temp = data[start];data[start] = data[end];data[end] = temp;}}// ====================测试代码====================public static void printArray(int numbers[]){if(numbers == null)return;int len = numbers.length;for(int i = 0; i < len; ++i)System.out.print(numbers[i]+"\t");System.out.println();}public static void Test(String testName, int numbers[]){if(testName != null)System.out.println(testName+" begins:");if (numbers == null)return;System.out.println("Test for solution 1:");printArray(numbers);reorderOddEven(numbers);printArray(numbers);System.out.println();}public static void Test1(){int numbers[] = {1, 2, 3, 4, 5, 6, 7};Test("Test1", numbers);}public static void Test2(){int numbers[] = {2, 4, 6, 1, 3, 5, 7};Test("Test2", numbers);}public static void Test3(){int numbers[] = {1, 3, 5, 7, 2, 4, 6};Test("Test3", numbers);}public static void Test4(){int numbers[] = {1};Test("Test4", numbers);}public static void Test5(){int numbers[] = {2};Test("Test5", numbers);}public static void Test6(){Test("Test6", null);}public static void main(String[] args){Test1();Test2();Test3();Test4();Test5();Test6();}
}

输出结果:
Test1 begins:
Test for solution 1:
1 2 3 4 5 6 7
1 7 3 5 4 6 2
Test2 begins:
Test for solution 1:
2 4 6 1 3 5 7
7 5 3 1 6 4 2
Test3 begins:
Test for solution 1:
1 3 5 7 2 4 6
1 3 5 7 2 4 6
Test4 begins:
Test for solution 1:
1
1
Test5 begins:
Test for solution 1:
2
2
Test6 begins:

转载于:https://www.cnblogs.com/yangyquin/p/4924179.html

P102、面试题14:调整数组顺序使奇数位于偶数前面相关推荐

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

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

  2. java 取数组的前90位,LeetCode 面试题21. 调整数组顺序使奇数位于偶数前面

    LeetCode 面试题21. 调整数组顺序使奇数位于偶数前面 题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 示例: 输入 ...

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

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

  4. 【剑指offer-Java版】14调整数组顺序使奇数位于偶数前面

    调整数组顺序使奇数位于偶数前面:遍历交换 特殊输入: 1) 只有一个数字 2) 全奇数或者全偶数 3) 空指针 4) 正常输入 考虑到扩展性,C++里面使用了函数指针来实现,但是对于java,可以采用 ...

  5. 14 调整数组顺序使奇数位于偶数前面

    输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分 C++: 1 void reOrderArray(vector<int ...

  6. 剑指Offer - 面试题21. 调整数组顺序使奇数位于偶数前面(双指针,原地算法)

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

  7. 剑指offer面试题21. 调整数组顺序使奇数位于偶数前面(双指针)

    题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 思路 详见链接 代码 class Solution:def exchan ...

  8. 剑指offer——面试题14:调整数组顺序使奇数位于偶数前面

    剑指offer--面试题14:调整数组顺序使奇数位于偶数前面 Solution1: 顺序交换,比较好的算法!!! class Solution { public:void reOrderArray(v ...

  9. 面试 6:调整数组顺序使奇数位于偶数前面

    今天给大家带来的是 <剑指 Offer>习题:调整数组顺序使奇数位于偶数前面,纯 Java 实现希望大家多加思考. 面试题:输入一个整型数组,实现一个函数来调整该数组中的数字的顺序,使得所 ...

  10. 《剑指offer》-- 调整数组顺序使奇数位于偶数前面、顺时针打印矩阵、数字在排序数组中出现的次数

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

最新文章

  1. MySQL主主配置说明
  2. 干货 | 你的Paper阅读能力合格了吗(硕士生版)
  3. 【程序员轶事】程序员的1927年12月31日午夜一秒谜案
  4. fork()与pid
  5. 创建您的第一个servlet
  6. vertical-align属性探究
  7. Java对数组的操作(二)—集合与数组的切换
  8. Free MyBatis plugin下载安装及作用
  9. 大数据40天精英计划-徐培成-专题视频课程
  10. 易支付源码 28k支付第四方支付源码-Oreo支付系统
  11. MySQL中的自增主键用完了怎么办
  12. 【转】钓鱼邮件攻击检测
  13. 新手使用PS心得-技巧
  14. 使用 Windows XP 的外观风格
  15. nginx php 设置时区,laravel5.8(二十)解决时区设置差8个小时解决办法
  16. Debian添加自启动的两种方式
  17. 定风波·三月七日沙湖道中遇雨
  18. 彻底销毁数据的4个方法
  19. 计算机看门狗的作用,关于看门狗的作用
  20. 腾讯与香港大学合作开展金融科技

热门文章

  1. arm架构linux运行docker失败,armdocker:在x86上模拟运行arm容器
  2. php sesssion,php sesssion原理
  3. linux 指针什么意思,在linux中获取指向结构设备指针的更简洁方法是什么?
  4. nginx How nginx processes a request
  5. Hadoop HIVE JavaAPI
  6. clang 反汇编
  7. Pandas 表连接(Merge,join,concatenate)
  8. pythonread读取怎么是乱码_python中如何读写文件不乱码
  9. python svm 实战_opencv-python 入门实战:传统方法Hog+svm实现目标检测
  10. kafka jar包_Kafka系列文章之安装测试-第2篇