github.com/AESNooper/go/src@v0.0.0-20220218095104-b56a4ab1bbbb/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 } 43 44 // This example demonstrates searching for float64 in a list sorted in ascending order. 45 func ExampleSearchFloat64s() { 46 a := []float64{1.0, 2.0, 3.3, 4.6, 6.1, 7.2, 8.0} 47 48 x := 2.0 49 i := sort.SearchFloat64s(a, x) 50 fmt.Printf("found %g at index %d in %v\n", x, i, a) 51 52 x = 0.5 53 i = sort.SearchFloat64s(a, x) 54 fmt.Printf("%g not found, can be inserted at index %d in %v\n", x, i, a) 55 // Output: 56 // found 2 at index 1 in [1 2 3.3 4.6 6.1 7.2 8] 57 // 0.5 not found, can be inserted at index 0 in [1 2 3.3 4.6 6.1 7.2 8] 58 } 59 60 // This example demonstrates searching for int in a list sorted in ascending order. 61 func ExampleSearchInts() { 62 a := []int{1, 2, 3, 4, 6, 7, 8} 63 64 x := 2 65 i := sort.SearchInts(a, x) 66 fmt.Printf("found %d at index %d in %v\n", x, i, a) 67 68 x = 5 69 i = sort.SearchInts(a, x) 70 fmt.Printf("%d not found, can be inserted at index %d in %v\n", x, i, a) 71 // Output: 72 // found 2 at index 1 in [1 2 3 4 6 7 8] 73 // 5 not found, can be inserted at index 4 in [1 2 3 4 6 7 8] 74 }