diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-16 19:23:18 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-16 19:23:18 +0000 |
commit | 43a123c1ae6613b3efeed291fa552ecd909d3acf (patch) | |
tree | fd92518b7024bc74031f78a1cf9e454b65e73665 /src/sort/example_search_test.go | |
parent | Initial commit. (diff) | |
download | golang-1.20-upstream.tar.xz golang-1.20-upstream.zip |
Adding upstream version 1.20.14.upstream/1.20.14upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/sort/example_search_test.go')
-rw-r--r-- | src/sort/example_search_test.go | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/sort/example_search_test.go b/src/sort/example_search_test.go new file mode 100644 index 0000000..856422a --- /dev/null +++ b/src/sort/example_search_test.go @@ -0,0 +1,74 @@ +// Copyright 2016 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 sort_test + +import ( + "fmt" + "sort" +) + +// This example demonstrates searching a list sorted in ascending order. +func ExampleSearch() { + a := []int{1, 3, 6, 10, 15, 21, 28, 36, 45, 55} + x := 6 + + i := sort.Search(len(a), func(i int) bool { return a[i] >= x }) + if i < len(a) && a[i] == x { + fmt.Printf("found %d at index %d in %v\n", x, i, a) + } else { + fmt.Printf("%d not found in %v\n", x, a) + } + // Output: + // found 6 at index 2 in [1 3 6 10 15 21 28 36 45 55] +} + +// This example demonstrates searching a list sorted in descending order. +// The approach is the same as searching a list in ascending order, +// but with the condition inverted. +func ExampleSearch_descendingOrder() { + a := []int{55, 45, 36, 28, 21, 15, 10, 6, 3, 1} + x := 6 + + i := sort.Search(len(a), func(i int) bool { return a[i] <= x }) + if i < len(a) && a[i] == x { + fmt.Printf("found %d at index %d in %v\n", x, i, a) + } else { + fmt.Printf("%d not found in %v\n", x, a) + } + // Output: + // found 6 at index 7 in [55 45 36 28 21 15 10 6 3 1] +} + +// This example demonstrates searching for float64 in a list sorted in ascending order. +func ExampleSearchFloat64s() { + a := []float64{1.0, 2.0, 3.3, 4.6, 6.1, 7.2, 8.0} + + x := 2.0 + i := sort.SearchFloat64s(a, x) + fmt.Printf("found %g at index %d in %v\n", x, i, a) + + x = 0.5 + i = sort.SearchFloat64s(a, x) + fmt.Printf("%g not found, can be inserted at index %d in %v\n", x, i, a) + // Output: + // found 2 at index 1 in [1 2 3.3 4.6 6.1 7.2 8] + // 0.5 not found, can be inserted at index 0 in [1 2 3.3 4.6 6.1 7.2 8] +} + +// This example demonstrates searching for int in a list sorted in ascending order. +func ExampleSearchInts() { + a := []int{1, 2, 3, 4, 6, 7, 8} + + x := 2 + i := sort.SearchInts(a, x) + fmt.Printf("found %d at index %d in %v\n", x, i, a) + + x = 5 + i = sort.SearchInts(a, x) + fmt.Printf("%d not found, can be inserted at index %d in %v\n", x, i, a) + // Output: + // found 2 at index 1 in [1 2 3 4 6 7 8] + // 5 not found, can be inserted at index 4 in [1 2 3 4 6 7 8] +} |