| 1234567891011121314151617181920212223242526272829303132333435 |
- // min_interface.go
- package min
- type Miner interface {
- Len() int
- ElemIx(ix int) interface{}
- Less(i, j int) bool
- Swap(i, j int)
- }
- func Min(data Miner) interface{} {
- min := data.ElemIx(0)
- for i := 1; i < data.Len(); i++ {
- if data.Less(i, i-1) {
- min = data.ElemIx(i)
- } else {
- data.Swap(i, i-1)
- }
- }
- return min
- }
- type IntArray []int
- func (p IntArray) Len() int { return len(p) }
- func (p IntArray) ElemIx(ix int) interface{} { return p[ix] }
- func (p IntArray) Less(i, j int) bool { return p[i] < p[j] }
- func (p IntArray) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
- type StringArray []string
- func (p StringArray) Len() int { return len(p) }
- func (p StringArray) ElemIx(ix int) interface{} { return p[ix] }
- func (p StringArray) Less(i, j int) bool { return p[i] < p[j] }
- func (p StringArray) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
|