I recently coded the Dutch national flag problem in Java and wrote some tests. The array in zero-indexed. Please take a look at how I verify that elements of the output array are in the right order. It's the method `verifyDutch` **[The Dutch national flag problem][1]** public static void dutchFlag(int[] input, int mid) { if (input == null || input.length < 2) { return; } int i = 0; // the end of the red region int j = 0; // the element under consideration int k = input.length - 1; // the start of the blue region while (j <= k) { if (input[j] < mid) { swap(input, i, j); i++; j++; } else if (input[j] == mid) { j++; } else { swap(input, j, k); k--; } } } **Testing** public class FlagSortsTests { @Test public void testDutchWithRandom() { int[] input = new int[10]; Random random = new Random(); for (int i = 0; i < input.length; i++) { input[i] = random.nextInt(100); } int mid = input[random.nextInt(input.length - 1)]; FlagSorts.dutchFlag(input, mid); verifyDutch(input, mid); } @Test public void testDutchSmallestMid() { int[] input = { 12, 34, 781, -1 }; int mid = -1; FlagSorts.dutchFlag(input, mid); verifyDutch(input, mid); } @Test public void testDutchLargestMid() { int[] input = { 12, 34, 781, -1 }; int mid = 781; FlagSorts.dutchFlag(input, mid); verifyDutch(input, mid); } @Test public void testDutchWithoutMid() { int[] input = { 12, 34, 781, -1 }; int mid = 90; FlagSorts.dutchFlag(input, mid); verifyDutch(input, mid); } private void verifyDutch(int[] input, int mid) { if (input == null || input.length < 2) { return; } for (int i = 1; i < input.length; i++) { if (input[i] < mid) { Assert.assertTrue(input[i - 1] < mid); } else if (input[i - 1] == mid) { Assert.assertTrue(input[i] >= mid); } else if (input[i - 1] > mid) { Assert.assertTrue(input[i] > mid); } } } **Update #1** The assert failure messages are wrong. Let me delete them until I write something more infomative [1]: https://en.wikipedia.org/wiki/Dutch_national_flag_problem