package me.ramswaroop.arrays.sorting; import java.util.Arrays; /** * Wiggle Sort: Arrange the elements in the array such that elements in * even indices are greater than or equal to its neighbouring elements * and elements in odd indices are less than or equal to its neighbouring * elements. In other words, all elements in array {@code a} are arranged * such that, a[i-1] <= a[i] => a[i+1] * <p> * Ex: {1, 3, 2, 5, 4, 6} * * @author ramswaroop * @version 01/09/2016 */ public class WiggleSort { public static int[] wiggleSortEasyWay(int[] a) { a = MergeSort.mergeSort(a); for (int i = 1; i < a.length; i += 2) { swap(a, i, i + 1); } return a; } private static void swap(int[] a, int index1, int index2) { if (index2 >= a.length) return; a[index1] = a[index1] + a[index2]; a[index2] = a[index1] - a[index2]; a[index1] = a[index1] - a[index2]; } public static void main(String[] a) { int[] ar = {3, 5, 6, 7, 8, 1, 2}; System.out.println(Arrays.toString(wiggleSortEasyWay(ar))); int[] ar1 = {3, 5, 6, 7, 2, 1}; System.out.println(Arrays.toString(wiggleSortEasyWay(ar1))); int[] ar2 = {3, 5, 6, 7, 8, 1}; System.out.println(Arrays.toString(wiggleSortEasyWay(ar2))); int[] ar3 = {3, 5, 6, 5, 8, 1}; System.out.println(Arrays.toString(wiggleSortEasyWay(ar3))); } }