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(" 调整后:"); 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 }