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 }