@Test
  public void testLongIntSortJavaWithIndex() {
    int N = 10000000;
    long[] a = new long[N];

    Random r = new Random(260379);

    for (int i = 0; i < N; i++) {
      a[i] = Math.abs(r.nextLong() % (N / 4));
    }

    long st = System.currentTimeMillis();
    int[] b = Sorting.quickSortWithIndexJava(a);
    System.out.println("Java sorting took: " + (System.currentTimeMillis() - st) + " ms");

    long idxsum = 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];
    }
    idxsum += b[N - 1];
    assertEquals((long) N * ((long) N - 1) / 2, idxsum);
  }