added a in-place sort implementation

Signed-off-by: Sébastien Boisvert <sebastien.boisvert.3@ulaval.ca>
the command that creates a map will sort data automatically

Signed-off-by: Sébastien Boisvert <sebastien.boisvert.3@ulaval.ca>
use insertion sort for small arrays

For 499994 entries, each with 21 bytes (k: 61):

0m1.853s with sort -T .
1m23.624s -O0 -g with quicksort
0m13.059s -O3 with quicksort
0m12.423s -O3 with quicksort + insertion sort

The command sort -T . is not in place and therefore can perform
buffered disk operations.

Signed-off-by: Sébastien Boisvert <sebastien.boisvert.3@ulaval.ca>
improve running time by using the median for the pivot

0m12.423s -> 0m11.399s to sort 499994 elements each with 21 bytes.

Signed-off-by: Sébastien Boisvert <sebastien.boisvert.3@ulaval.ca>
use random positions to obtain pivot

Signed-off-by: Sébastien Boisvert <sebastien.boisvert.3@ulaval.ca>
use custom C++ operators

Signed-off-by: Sébastien Boisvert <sebastien.boisvert.3@ulaval.ca>