...

Source file src/sort/example_search_test.go

Documentation: 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  
		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  }
		75  

View as plain text