12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- // Copyright 2009 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package main
- import (
- "fmt"
- "sort"
- )
- func main() {
- seq := Sequence{6, 2, -1, 44, 16}
- sort.Sort(seq)
- fmt.Println(seq)
- }
- type Sequence []int
- // Methods required by sort.Interface.
- func (s Sequence) Len() int {
- return len(s)
- }
- func (s Sequence) Less(i, j int) bool {
- return s[i] < s[j]
- }
- func (s Sequence) Swap(i, j int) {
- s[i], s[j] = s[j], s[i]
- }
- // Copy returns a copy of the Sequence.
- func (s Sequence) Copy() Sequence {
- copy := make(Sequence, 0, len(s))
- return append(copy, s...)
- }
- // Method for printing - sorts the elements before printing.
- func (s Sequence) String() string {
- s = s.Copy() // Make a copy; don't overwrite argument.
- sort.Sort(s)
- str := "["
- for i, elem := range s { // Loop is O(N²); will fix that in next example.
- if i > 0 {
- str += " "
- }
- str += fmt.Sprint(elem)
- }
- return str + "]"
- }
|