@Test
public void testMultiPivotsInPlace() {

    // more pivots than low split on first pass
    // multiple pivots, but more low data on second part of recursion
    double[] keys = new double[30];
    for (int i = 0; i < 9; i++) {
        keys[i] = i + 20 * (i % 2);
    }
    for (int i = 9; i < 20; i++) {
        keys[i] = 10;
    }
    for (int i = 20; i < 30; i++) {
        keys[i] = i - 20 * (i % 2);
    }
    keys[29] = 29;
    keys[24] = 25;
    keys[26] = 25;
    double[] v = valuesFromKeys(keys, 0);
    Sort.sort(keys, v);
    checkOrder(keys, 0, keys.length, v);
}