handysort icon indicating copy to clipboard operation
handysort copied to clipboard

Alphanumeric string sorting algorithm implementation in Go

: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=.