github.com/riscv/riscv-go@v0.0.0-20200123204226-124ebd6fcc8e/src/sort/example_search_test.go (about)

     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  }