xlab / handysort

Alphanumeric string sorting algorithm implementation in Go
MIT License
24 stars 3 forks source link

:exclamation: WARNING: 13x slower than https://github.com/fvbommel/util/tree/master/sortorder

Handysort Build Status GoDoc

This is a Go package implementing a correct comparison function to compare alphanumeric strings with respect to their integer parts.

For example, this is default result of strings sort:

hello1
hello10
hello11
hello2
hello3

This is handysort:

hello1
hello2
hello3
hello10
hello11

However, this is about 5x-8x times slower than the default sort version. (benchmarks available)

Usage

package main

import (
    "github.com/xlab/handysort"
    "sort"
)

func main() {
    s1, s2 := "hello2", "hello10"
    // instead of s1 < s2
    less := handysort.StringLess(s1, s2)

    s := []string{"hello5", "hello10", "hello1"}
    // instead of sort.Strings
    sort.Sort(handysort.Strings(s))
}

Benchmarking

$ go test -bench=.