码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-09-17 01:50:26      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

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 }

 

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

标签:

原文地址:http://www.cnblogs.com/jiangyi-uestc/p/5877753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!