// ADAPTED FROM:https://stackoverflow.com/questions/53722004/generic-quicksort-implemented-with-vector-and-iterators-c static void serialQuicksort(QSVector::iterator b, QSVector::iterator e) { if ((e - b) < 2) return; // do shuffle QSVector::iterator i = b, j = e-1; auto pivot_value = (i + (j-i)/2)->value; if(i->value < pivot_value) while ((++i)->value < pivot_value) ; if(j->value > pivot_value) while ((--j)->value > pivot_value) ; while (i < j) { std::iter_swap(i, j); while ((++i)->value < pivot_value) ; while ((--j)->value > pivot_value) ; } j++; // recursive call serialQuicksort(b, j); serialQuicksort(j, e); }