数组内奇偶数分离

2018-09-10  本文已影响0人  ONEay

数组内奇偶数分离(奇数在前)

思路1:

private static void sort(int[] val) {
    int len = val.length;
//表示偶数的下标
    int a = 0;
//从下标为1处开始遍历,遍历到奇数时,与a交换
    int b = 1;
    for (; b < len ; b++) {
//当前位置数为奇数,不需要交换,继续寻找偶数。(a++)
      if (val[a] % 2 != 0){
        a++;
      }

      if (val[b] %2 != 0){
        int temp = val[a];
        val[a] = val[b];
        val[b] = temp;
//继续寻找下一个偶数
        a++;
      }
    }

    System.out.println(Arrays.toString(val));
  }

思路2:

从结果入手,我们想要的结果数组:[1, 3, 5, 7, 9, 2, 4, 6, 8]
可以先遍历一次数组,确定奇数的个数。在遍历一次数组确定此数为奇数还是偶数,填充到另一个新数组中,实现排序。前提是数组有序。

public static void sort2(int[] args) {
    int len = args.length;
    int b = 0 ;
//确定奇数个数
    for (int i = 0; i < len; i++) {
      if (args[i] % 2 != 0){
        b++;
      }
    }
//此时,b为我们想要的结果数组中偶数的开始下标。
    Arrays.sort(args);
    int[] result = new int[len];
    int a= 0;
    for (int i = 0; i < len; i++) {
      if (args[i] % 2 ==0 ){
//偶数
        result[b] = args[i];
        b++;
      }else {
//奇数
        result[a] = args[i];
        a++;
      }
    }

    System.out.println(Arrays.toString(result));
  }
上一篇下一篇

猜你喜欢

热点阅读