【剑指offer】调整数组数字位置

时间:2022-08-30 10:53:28

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

*思路:遍历数组,找到第一个偶数的位置 i ,然后以此位置为起点,找到后续第一个奇数的位置 j,然后保存下 array[j], 并将索引为[i, j-1]的元素全部后移一位,最后将array[i]置为之前保存的array[j]

 1 public class Solution {
 2    public void reOrderArray(int [] array) {
 3             for(int i=0; i<array.length; i++){
 4                 if(array[i]%2 ==0){
 5                     for(int j=i; j< array.length; j++){
 6                         if(array[j]%2!=0){
 7                             int temp = array[j];
 8                             //将数组下标为i到j-1的元素后移一位
 9                             for(int k=j;k>i;k--){
10                                 array[k] = array[k-1];
11                             }
12                             //将发现的奇数放到正确的位置
13                             array[i] = temp;
14                             break;
15                         }
16                     }
17                 }
18             }
19            
20         }
21 }