@Test public void testLongIntSort() { int N = 10000000; long[] a = new long[N]; Random r = new Random(260379); long achecksum = 0; for (int i = 0; i < N; i++) { a[i] = Math.abs(r.nextLong() % (N / 4)); achecksum += a[i]; } long st = System.currentTimeMillis(); int[] b = Sorting.radixSortWithIndex(a); System.out.println("Native radix sorting took: " + (System.currentTimeMillis() - st) + " ms"); long idxsum = 0; long asum = 0; for (int i = 0; i < N - 1; i++) { assertTrue((a[i] < a[i + 1]) || (a[i] == a[i + 1] && b[i] <= b[i + 1])); assertTrue(b[i] >= 0 && b[i] < a.length); idxsum += b[i]; asum += a[i]; } asum += a[N - 1]; idxsum += b[N - 1]; assertEquals(achecksum, asum); assertEquals((long) N * ((long) N - 1) / 2, idxsum); }