<剑指offer> 第11题
题目:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分
思路:
维护两个指针,一个指向第一个数,从前往后遍历,另一个指向最后一个数,从后往前遍历,遇到偶数和奇数分别停下,交换位置,然后继续下一次
(类似于快排的第一步)
public class Eleventh { public static int[] sortArray(int[] arr){ if(arr.length < 2){ return arr; } int left = 0; int right = arr.length - 1; while(left < right){ if(arr[left] % 2 == 1 && left < right){ left ++; } if(arr[right] % 2 == 0 && left <right){ right --; } int temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; } return arr; } public static void main(String[] args){ int[] arr = {1,2,3,4,5,6}; for(int i: sortArray(arr) ){ System.out.println(i); } } }