private static void TestWiggleSort() { WiggleSort instance = new WiggleSort(); instance.Solution(new[] { 1, 5, 1, 1, 6, 4 }); }
public void TestCase() { var nums = new int[] { 1, 2, 3, 4, 5, 6, 7 }; int k = 3; if (nums.Length == 0) { return; } //skip unnecessary rounds if k > nums.Length k = k % nums.Length; int i = 0; var diff = Math.Abs((nums.Length - k) - k); int step = Math.Min(diff, k); while (i < nums.Length - k) { int j = nums.Length - k; while (j < nums.Length) { var temp = nums[j]; nums[j++] = nums[i]; nums[i++] = temp; } k = step; } var sort = new WiggleSort(); var arr = new int[] { 1, 5, 1, 1, 6, 4 }; sort.Sort(arr); Check(arr); arr = new int[] { 2, 3, 3, 2, 2, 2, 1, 1 }; sort.Sort(arr); Check(arr); arr = new int[] { 5, 3, 1, 2, 6, 7, 8, 5, 5 }; sort.Sort(arr); Check(arr); arr = new int[] { 1, 2, 1, 2, 1, 1, 2, 2, 1 }; sort.Sort(arr); Check(arr); arr = new int[] { 1, 2, 2, 1, 2, 1, 1, 1, 1, 2, 2, 2 }; sort.Sort(arr); Check(arr); arr = new int[] { 2, 1, 6, 4, 5, 7, 3 }; sort.Sort(arr); Check(arr); arr = new int[] { 3, 4, 6, 1, 5, 8 }; sort.Sort(arr); Check(arr); arr = new int[] { 1, 5, 1, 1, 6, 4 }; sort.Sort(arr); Check(arr); arr = new int[] { 1 }; sort.Sort(arr); Check(arr); arr = new int[] { 1, 5 }; sort.Sort(arr); Check(arr); }