1 package com.xiaoysec;
2
3 /**
4 * 下面是面试趣医网技术面的时候出现的一个简单的题目 题目的要求是将一个数组中的奇数和偶数进行分离 以奇数在前一部分为例进行解题
5 * 算法的主要思想是双指针法对前后两个元素进行奇偶判断
6 *
7 * @author xiaoysec
8 *
9 */
10 public class Sort {
11 // 完成数组奇偶数的
12 public void split(int[] arr) {
13 int temp = 0;
14 for (int i = 0, j = arr.length-1; i <= j;) {
15 // 左边是奇数 右边是偶数的情况
16 if ((jishu(arr[i])) == 1 && (jishu(arr[j])) == 0) {
17 i++;
18 j--;
19 }
20 // 左边是奇数 右边是奇数
21 if ((jishu(arr[i])) == 1 && (jishu(arr[j])) == 1) {
22 i++;
23 }
24 // 左边是偶数 右边是奇数
25 if ((jishu(arr[i]) == 0) && (jishu(arr[j])) == 1) {
26 temp = arr[i];
27 arr[i] = arr[j];
28 arr[j] = temp;
29 i++;
30 j--;
31 }
32 // 两边都是偶数
33 if ((jishu(arr[i])) == 0 && (jishu(arr[j])) == 0) {
34 j--;
35 }
36 }
37
38 }
39
40 // 奇偶数判断函数
41 public int jishu(int k) {
42 if (k % 2 == 0)
43 return 0;
44 else
45 return 1;
46 }
47
48 public static void main(String[] args) {
49 int[] arr = new int[] {4,6,8,0,1,3,7};
50 System.out.println("before sort:");
51 for (int i : arr) {
52 System.out.print(i + " ");
53 }
54 System.out.println();
55 Sort s = new Sort();
56 s.split(arr);
57 System.out.println("after sort:");
58 for (int i : arr) {
59 System.out.print(i + " ");
60 }
61 }
62
63 }