mirror of https://github.com/poanetwork/gecko.git
31 lines
930 B
Go
31 lines
930 B
Go
|
// (c) 2019-2020, Ava Labs, Inc. All rights reserved.
|
||
|
// See the file LICENSE for licensing terms.
|
||
|
|
||
|
package utils
|
||
|
|
||
|
import (
|
||
|
"sort"
|
||
|
)
|
||
|
|
||
|
// IsSortedAndUnique returns true if the elements in the data are unique and sorted.
|
||
|
func IsSortedAndUnique(data sort.Interface) bool {
|
||
|
for i := data.Len() - 2; i >= 0; i-- {
|
||
|
if !data.Less(i, i+1) {
|
||
|
return false
|
||
|
}
|
||
|
}
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
type innerSortUint32 []uint32
|
||
|
|
||
|
func (su32 innerSortUint32) Less(i, j int) bool { return su32[i] < su32[j] }
|
||
|
func (su32 innerSortUint32) Len() int { return len(su32) }
|
||
|
func (su32 innerSortUint32) Swap(i, j int) { su32[j], su32[i] = su32[i], su32[j] }
|
||
|
|
||
|
// SortUint32 sorts an uint32 array
|
||
|
func SortUint32(u32 []uint32) { sort.Sort(innerSortUint32(u32)) }
|
||
|
|
||
|
// IsSortedAndUniqueUint32 returns true if the array of uint32s are sorted and unique
|
||
|
func IsSortedAndUniqueUint32(u32 []uint32) bool { return IsSortedAndUnique(innerSortUint32(u32)) }
|