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

Posted 梵高先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组调整数组顺序使奇数位于偶数前面相关的知识,希望对你有一定的参考价值。

1. 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分。

 1 /**
 2  * 调整数组顺序使奇数位于偶数前面
 3  * 
 4  * @author
 5  *
 6  */
 7 public class Solution {
 8 
 9     public static void order(int[] array) {
10 
11         if (null == array || array.length == 0 || array.length == 1) {
12             return;
13         }
14 
15         int start = 0; // 从头开始向后移动的指针
16         int end = array.length - 1; // 从尾开始向前移动的指针
17 
18         while (start < end) {
19 
20             // 满足前偶后奇进行交换
21             if ((array[start] & 1) == 0 && ((array[end] & 1) == 1)) {
22                 swap(array, start, end);
23             }
24 
25             if ((array[start] & 1) == 1) {
26                 start++;
27             }
28 
29             if ((array[end] & 1) == 0) {
30                 end--;
31             }
32 
33         }
34     }
35 
36     public static void swap(int[] array, int m, int n) {
37         int temp;
38         temp = array[m];
39         array[m] = array[n];
40         array[n] = temp;
41     }
42 
43     public static void main(String[] argss) {
44 
45         int[] array = { 1, 2, 3, 4, 5, 6, 7 };
46 
47         System.out.println("调整前:");
48         for (int i : array) {
49             System.out.print(i + " ");
50         }
51 
52         order(array);
53 
54         System.out.println("\n调整后:");
55         for (int i : array) {
56             System.out.print(i + " ");
57         }
58     }
59 }

 

调整前:
1 2 3 4 5 6 7 
调整后:
1 7 3 5 4 6 2 

 

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

 

 1 import java.util.List;
 2 
 3 public class Solution
 4 {
 5     public void reOrderArray(int[] array)
 6     {
 7         if (array.length == 0)
 8         {
 9             return;
10         }
11         
12         int temp = 0;
13         boolean flag;
14         
15         //类似插入排序,每次将奇数插入到所有偶数的前面
16         for (int i = 0; i < array.length; i++)
17         {
18             flag = true;
19             if ((array[i] & 1) == 1)
20             {
21                 for (int j = i; flag && j>0; j--)
22                 {
23                     if ((array[j - 1] & 1) == 0)
24                     {
25                         temp = array[j];
26                         array[j] = array[j - 1];
27                         array[j - 1] = temp;
28                     }else{
29                         flag = false;
30                     }
31                 }
32             }
33         }
34         
35     }
36 }

 

以上是关于数组调整数组顺序使奇数位于偶数前面的主要内容,如果未能解决你的问题,请参考以下文章

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

《剑指Offer》题目:调整数组顺序使奇数位于偶数前面

代码的完整性:调整数组顺序使奇数位于偶数前面

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

求调整数组顺序使奇数位于偶数前面

剑指Offer调整数组顺序使奇数位于偶数前面