28void* quickselect(
void ** array,
size_t n,
size_t start,
size_t end)
36 size_t len = end - start;
38 size_t pivot = len/2 + start;
40 size_t pivot = random_gen() % len + start;
44 void* pval = array[pivot];
45 double pprob = getLProb(pval);
46 std::swap(array[pivot], array[end-1]);
47 size_t loweridx = start;
48 for(
size_t i = start; i < end-1; i++)
50 if(getLProb(array[i]) < pprob)
52 std::swap(array[i], array[loweridx]);
56 std::swap(array[end-1], array[loweridx]);