/** * Given a sorted array, and re-arrange it to wiggle style in one pass. * i.e. * [1] A0 >= A1 <= A2 >= A3 .... .... An. * [2] A0 <= A1 >= A2 <= A3 .... .... An. * <p> * Tags: Sort, Array */ class WiggleSort { public static void main(String[] args) { } /** * Swap neighbors * A0 >= A1 <= A2 >= A3 .... .... An. */ public void wiggleSort(int[] A) { if (A == null || A.length == 0) return; for (int i = 0; i < A.length - 1; i += 2) { swap(A, i, i + 1); } } /** * A0 <= A1 >= A2 <= A3 .... .... An. */ public void wiggleSort2(int[] A) { if (A == null || A.length == 0) return; for (int i = 1; i < A.length - 1; i += 2) { swap(A, i, i + 1); } } }