SortingAlgorithms.jl

Extra sorting algorithms extending Julia's sorting API
Popularity
53 Stars
Updated Last
1 Year Ago
Started In
September 2013

Sorting Algorithms

Build status Coverage Status deps

The SortingAlgorithms package provides four sorting algorithms that can be used with Julia's standard sorting API:

  • HeapSort – an unstable, general purpose, in-place, O(n log n) comparison sort that works by heapifying an array and repeatedly taking the maximal element from the heap.
  • TimSort – a stable, general purpose, hybrid, O(n log n) comparison sort that adapts to different common patterns of partially ordered input data.
  • CombSort – an unstable, general purpose, in-place, O(n log n) comparison sort with O(n^2) pathological cases that can attain good efficiency through SIMD instructions and instruction level parallelism on modern hardware.
  • PagedMergeSort – a stable, general purpose, O(n log n) time and O(sqrt n) space comparison sort.

Usage

julia> using SortingAlgorithms julia> words = map(chomp,[readlines(open("/usr/share/dict/words"))...]) 235886-element Array{ASCIIString,1}: "A" "a" "aa"  "zythum" "Zyzomys" "Zyzzogeton" julia> sort!(words, alg=TimSort) 235886-element Array{ASCIIString,1}: "A" "Aani" "Aaron"  "zymurgy" "zythem" "zythum" julia> sort!(words, alg=TimSort, by=length) 235886-element Array{ASCIIString,1}: "A" "B" "C"  "scientificophilosophical" "tetraiodophenolphthalein" "thyroparathyroidectomize" julia> sort!(words, alg=HeapSort) 235886-element Array{ASCIIString,1}: "A" "Aani" "Aaron"  "zymurgy" "zythem" "zythum" julia> sort!(words, alg=HeapSort, by=length) 235886-element Array{ASCIIString,1}: "L" "p" "U"  "scientificophilosophical" "tetraiodophenolphthalein" "thyroparathyroidectomize" julia> sort!(randn(1000), alg=CombSort) 1000-element Array{Float64,1}: -2.86255 -2.72041 -2.58234  3.15075 3.20058 3.23942

Other packages that provide sorting algorithms

While SortingAlgorithms.jl is the most widely used sorting package in the Julia ecosystem, other packages are available: