题目描述

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

思路一:

首先这个算法我刚刚开始想到的办法是我将这个数组有多少个奇数求出来,然后我就知道偶数从数组哪个地方开始放数据,比如int[] array = {1, 2, 5, 4, 6, 8, 7},这个时候奇数有三个,那么偶数就从这个数组的第四个开始存,奇数从第0个开始存。那么此时我就遍历这个数组,然后发现一个奇数就和该数组的奇数位置换,这样就会导致最后相对位置发生变化,所以这个解决办法就是创建一个和array这个数组一样大小的数组,然后遍历传进来的数组,遇到奇数则存到前面部分,遇到偶数则存到后面的部分,前面部分和后面部分的分界线就是之前求的这个奇数个数。

综合来说就是:遍历这个数组得到哪些位置应该存奇数,哪些位置应该存偶数,然后在遍历这个数组,遇到奇数则放到依次放到奇数的位置,遇到偶数则依次放到偶数的位置。

实现:

public class Solution {
public void reOrderArray(int [] array) {
int length = array.length;
int count = 0;
if(length == 0){
return;
}
for(int i = 0; i

思路二:

这个方法则是利用类似冒泡的方法,从这个数组的最后往前一个一个进行比较,如果前偶后奇,则两个数据交换位置。否则位置不变。

实现:

public void reOrderArray(int [] array) {
int length = array.length;
for(int i = 0; i 0; j --){
if(array[j] % 2 == 1 && array[j - 1] % 2 == 0){
int temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
}
}
}
}

最新文章

  1. 开源WinForms界面开发框架Management Studio 选项卡文档 插件 Office 2007蓝色风格 后台线程
  2. 【JAE】JAE京东云擎部署首个Java应用
  3. react+redux开发谷歌插件
  4. MySql MyISAM和InnoDB的区别
  5. IOS UIView 属性clipsToBounds
  6. Oracle primary,unique,foreign 区别,Hibernate 关联映射
  7. Linq ExecuteQuery,ExecuteCommand
  8. [Xamarin] 透過 intent-filter 來接管 http ,製作偽瀏覽器 (转帖)
  9. ios开发——实用技术OC篇》倒计时实现的两种方法
  10. js快速排序法
  11. jvm的client和server
  12. SQL数据库的应用一(Day 24)
  13. BDA大数据处理流程
  14. bzoj4361 isn (dp+树状数组+容斥)
  15. 浅谈C语言内存管理、内存泄露、堆栈
  16. 微信小程序解密
  17. ejb servlet demo
  18. python的enumerate函数
  19. 词法分析器总结--flex&bison
  20. 协方差与pearson相关系数

热门文章

  1. mysql层的内存分配
  2. php 词法分析,语法分析
  3. 【HDU5126】 stars k-d树
  4. 03——Solr学习之Solr的使用(不会用)
  5. (转)python学习笔记5--decimal
  6. ElasticSearch-SQL 安装和使用
  7. java_sql_Batch_批处理
  8. Vue中子组件调用父组件的方法
  9. Chapter 3 Phenomenon——11
  10. Qt 绘图与动画系统