标签:array des 奇数位于偶数前面 class style 相对 记录 i++ solution
13.调整数组顺序使奇数位于偶数前面
定义一个等长的数组,遍历两次数组,第一次存奇数,第二次存偶数,最后把临时数组的内存拷贝到数组中
1 public class Solution { 2 public void reOrderArray(int [] array) { 3 // 定义一个等长的数组, 4 int[] temp = new int[array.length]; 5 // 遍历两次数组,第一次存奇数,第二次存偶数 6 // 从前往后找出奇数,存入0 下标开始存, 7 int index = 0; // 临时数组的当前下标 8 for(int i = 0; i < array.length; i++){ 9 if((array[i] & 1) != 0){ 10 temp[index++] = array[i]; 11 } 12 } 13 14 for(int i = 0; i < array.length; i++){ 15 if((array[i] & 1) == 0){ 16 temp[index++] = array[i]; 17 } 18 } 19 // 把临时数组拷贝会原来的数组 20 for(int i = 0; i < array.length; i++){ 21 array[i] = temp[i]; 22 } 23 24 } 25 }
遍历数组,把上一个奇数到当前奇数之间的偶数后移一位,把当前奇数填到上一个奇数后面,更新当前奇数的位置
1 public class Solution { 2 public void reOrderArray(int [] array) { 3 // 遍历数组 4 int m = -1; // 当前奇数的位置 5 for(int i = 0; i < array.length; i++){ 6 7 // 如果是奇数, 记录下这个值,将 (i + 1) - j 的元素都后移一位 8 if((array[i] & 1) != 0){ 9 int j = i; 10 int temp = array[j]; 11 while(j > m + 1){ 12 array[j] = array[j - 1]; 13 j--; 14 } 15 m = j; // 更新当前奇数的位置 16 array[j] = temp; 17 } 18 } 19 } 20 }
标签:array des 奇数位于偶数前面 class style 相对 记录 i++ solution
原文地址:https://www.cnblogs.com/hi3254014978/p/12577162.html