数组重排序(如何将所有奇数都放在所有偶数前面)的深入分析

 更新时间:2013年06月04日 17:12:57   作者:  
本篇文章是对数组重排序(如何将所有奇数都放在所有偶数前面)的方法进行了详细的分析介绍,需要的朋友参考下
这里介绍一种高效的能在O(n)时间复杂度内完成的算法。
核心思想是:定义两个指针,一个指针A从前往后扫描,一个指针B从后往前扫描。指针A扫描到偶数暂停,指针B扫描到奇数暂停,然后交换着两个数,交换之后继续如上述扫描和交换,直到指针A和指针B重合停止。
这个算法的Java代码如下:
复制代码 代码如下:

package Reorder;
public class Reorder {

 public static void main(String[] args) {
  int[] list = { 1, 2, 3, 4, 5, 7, 9, 11 };
  reorderOddEven(list);
 }
 public static void reorderOddEven(int[] list) {
  int length = list.length;
  for (int i = 0; i < length; i++) {
   System.out.print(list[i] + " ");
  }
  System.out.print("\n");
  int begin = 0;
  int end = length - 1;
  while (begin < end) {
   while (begin < end && (list[begin] & 0x1) != 0)
    begin++;
   while (begin < end && (list[end] & 0x1) == 0)
    end--;
   if (begin < end) {
    int temp = list[begin];
    list[begin] = list[end];
    list[end] = temp;
   }
  }
  for (int i = 0; i < length; i++) {
   System.out.print(list[i] + " ");
  }
 }
}

相关文章

  • java使用hashMap缓存保存数据的方法

    java使用hashMap缓存保存数据的方法

    这篇文章主要介绍了java使用hashMap缓存保存数据的方法,结合实例形式简单分析了java基于hashmap读写缓存数据的相关操作技巧,需要的朋友可以参考下
    2016-08-08
  • java 取交集方法retainAll的实现

    java 取交集方法retainAll的实现

    这篇文章主要介绍了java 取交集方法retainAll的实现操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • SpringBoot项目读取外置logback配置文件的问题及解决

    SpringBoot项目读取外置logback配置文件的问题及解决

    SpringBoot项目读取外置logback配置文件的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • 小白教程! Linux服务器上JDK安装配置方法

    小白教程! Linux服务器上JDK安装配置方法

    这篇文章主要为大家详细介绍了Linux服务器上JDK安装配置方法,小白教程!具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • 测试springboot项目出现Test Ignored的解决

    测试springboot项目出现Test Ignored的解决

    这篇文章主要介绍了测试springboot项目出现Test Ignored的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 浅谈MyBatis中@MapKey的妙用

    浅谈MyBatis中@MapKey的妙用

    这篇文章主要介绍了MyBatis中@MapKey的妙用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java使用百度AI接口实现智能机器人对话系统

    Java使用百度AI接口实现智能机器人对话系统

    AI已经在各行各业中广泛应用,助力于各式各样的业务,而在机器人对话中,我们可以通过利用百度AI中的自然语言处理、问答知识图谱等技术,使机器人可以更加智能化、自然化的为用户服务,本文介绍Java利用百度AI接口实现智能机器人对话系统
    2024-01-01
  • 详解IDEA JUnit5测试套件运行错误的问题

    详解IDEA JUnit5测试套件运行错误的问题

    这篇文章主要介绍了详解IDEA JUnit5测试套件运行错误的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • spring ioc的简单实例及bean的作用域属性解析

    spring ioc的简单实例及bean的作用域属性解析

    这篇文章主要介绍了spring ioc的简单实例及bean的作用域属性解析,具有一定借鉴价值,需要的朋友可以参考下
    2017-12-12
  • OpenCV实现反阈值二值化

    OpenCV实现反阈值二值化

    这篇文章主要为大家详细介绍了OpenCV实现反阈值二值化,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11

最新评论