Skip to content

litwr2/research-of-sorting

Repository files navigation

research-of-sorting

it contains C++ implementations of various sorting algorithms together with scripts which provide a test suite to measure these algorithms performance and memory requirements

array.cpp - an array sort implementation

baseop.cpp - several base operations required by some sort methods

boost.cpp - a wrapper to use sort methods from the boost libraries: spreadsort, pdqsort, spinsort, flat_stable_sort

bsd.cpp - a wrapper to use sort methods from the bsd library: mergesort, heapsort, radixsort, sradixsort

bubble.cpp - a bubble sort implementation

check-stable.cpp - it used to check a method the stable feature

fillings.cpp - it provides various data filling methods

hash.cpp - a hash sort implementation

hashtree.cpp - three sort methods which use hashes which use binary trees instead of lists, the first method uses an unbalanced tree, the second - a tree (std::multiset) from the C++ standard library, the third - a tree (boost::container::multiset) from the boost library

insertion.cpp - an insertion sort implementation

method-test.cpp - it is used to check the correctness of a method

nsort.cpp - the main program to gather results of work with various data

nsort-all.cpp - the main program to gather results of work with all permutations

oms7.cpp - a wrapper to use several sort methods from a repo - copy all required methods to a file named oms7base.cpp and put them into opt subdirectory

quick-dp.cpp - a dual pivots quick sort implementation

quick-hoare.cpp - a Hoare's quick sort implementation with the pivot in the middle

quick-lomuto.cpp - a Lomuto's quick sort implementation

quick-np.cpp - an implementation of the quick sort without pivots

quick-safe-insertion.cpp - a Hoare's quick sort which uses insertion sort for tiny patitions and which is safe against quadratic timings

radix.cpp - the LSD radix sort implementation

radix-msd.cpp - the MSD radix sort implementation

selection.cpp - a selection sort implementation

shell-plain.cpp - a Shell's sort implementation without tables

shell-tab.cpp - Shell's sort implementations with tables

sort-algo.cpp - a wrapper to use several sort methods from a repo - copy all required methods to a file named SortAlgo-m.cpp and put them into opt/SortAlgo subdirectory

std.cpp - a wrapper to use sort methods from the C++ standard library: qsort, sort_heap, sort, stable_sort

tim.cpp - a wrapper to use a Tim sort implementation from a repo - put the required header file into opt subdirectory

tree.cpp - two implementations of the binary tree sort using the boost and C++ standard libraries

trie.cpp - a trie sort implementation

The gathered performance results are placed into two interactive tables: the first one contains data for particular large sorting arrays, the second one contains data for tiny sorting arrays which iterate through all possible order of elements.

A static table contains data about additional memory requirements for various sort methods.

All these results were got from AMD Phenom™ II X4 955 @3.214 MHz working under Linux x86-64. GCC was used.

About

Code for testing of different sorting algorithms

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages