Home | History | Annotate | Download | only in sort
      1 // Copyright 2016 The Go Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 package sort_test
      6 
      7 import (
      8 	"fmt"
      9 	"sort"
     10 )
     11 
     12 // This example demonstrates searching a list sorted in ascending order.
     13 func ExampleSearch() {
     14 	a := []int{1, 3, 6, 10, 15, 21, 28, 36, 45, 55}
     15 	x := 6
     16 
     17 	i := sort.Search(len(a), func(i int) bool { return a[i] >= x })
     18 	if i < len(a) && a[i] == x {
     19 		fmt.Printf("found %d at index %d in %v\n", x, i, a)
     20 	} else {
     21 		fmt.Printf("%d not found in %v\n", x, a)
     22 	}
     23 	// Output:
     24 	// found 6 at index 2 in [1 3 6 10 15 21 28 36 45 55]
     25 }
     26 
     27 // This example demonstrates searching a list sorted in descending order.
     28 // The approach is the same as searching a list in ascending order,
     29 // but with the condition inverted.
     30 func ExampleSearch_descendingOrder() {
     31 	a := []int{55, 45, 36, 28, 21, 15, 10, 6, 3, 1}
     32 	x := 6
     33 
     34 	i := sort.Search(len(a), func(i int) bool { return a[i] <= x })
     35 	if i < len(a) && a[i] == x {
     36 		fmt.Printf("found %d at index %d in %v\n", x, i, a)
     37 	} else {
     38 		fmt.Printf("%d not found in %v\n", x, a)
     39 	}
     40 	// Output:
     41 	// found 6 at index 7 in [55 45 36 28 21 15 10 6 3 1]
     42 }
     43