boostorg / sort

Boost.Sort
51 stars 45 forks source link

BOOST SORT

Introduction

The goal of the Boost Sort Library is provide to the users, the most modern and fast sorting algorithms.

This library provides stable and not stable sorting algorithms, in single thread and parallel versions.

These algorithms do not use any other library or utility. The parallel algorithms need a C++11 compliant compiler.

Detailed boost API documentation also available.

Single Thread Algorithms

Algorithm Stable Additional memory Best, average, and worst case Comparison method
spreadsort no key_length N, N sqrt(LogN), Hybrid radix sort
min(N logN, N key_length)
pdqsort no Log N N, N LogN, N LogN Comparison operator
spinsort yes N / 2 N, N LogN, N LogN Comparison operator
flat_stable_sort yes size of the data / 256 + 8K N, N LogN, N LogN Comparison operator

Parallel Algorithms

Algorithm Stable Additional memory Best, average, and worst case
block_indirect_sort no block_size * num_threads N, N LogN , N LogN
sample_sort yes N N, N LogN , N LogN
parallel_stable_sort yes N / 2 N, N LogN , N LogN

The block_size is an internal parameter of the algorithm, which in order to achieve the highest speed, changes according to the size of the objects to sort according to the next table. The strings use a block_size of 128.

object size (bytes) 1 - 15 16 - 31 32 - 63 64 - 127 128 - 255 256 - 511 512 -
block_size (number of elements) 4096 2048 1024 768 512 256 128

Installation

Author and Copyright

This library is integrated in the Boost Library.

Copyright 2017

Distributed under the Boost Software License, Version 1.0.