InterviewProblems

 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 }

 

posted @ 2016-03-11 20:12  小羊同学  阅读(215)  评论(0编辑  收藏  举报