Home »
Golang »
Golang Reference
Golang sort.Search() Function with Examples
Golang | sort.Search() Function: Here, we are going to learn about the Search() function of the sort package with its usages, syntax, and examples.
Submitted by IncludeHelp, on September 11, 2021
sort.Search()
The Search() function is an inbuilt function of the sort package which is used to search the element and return the smallest index i in [0, n) at which f(i) is true. The Search() function uses binary search to search an element.
It accepts two parameters (n int, f func(int) bool) – n is the length of the list and f is a bool function that is used for the comparison and returns the smallest index.
Syntax
func Search(n int, f func(int) bool) int
Parameters
- n : Length of the list.
- f : Boolean function to be checked with each element of the list.
Return Value
The return type of the Search() function is an int, it returns the smallest index.
Example 1
// Golang program to demonstrate the
// example of sort.Search() Function
// Searching a list sorted in ascending order
package main
import (
"fmt"
"sort"
)
func main() {
x := []int{10, 20, 30, 40, 50}
// Element to search
v := 30
ind := sort.Search(len(x), func(ind int) bool { return x[ind] >= v })
if ind < len(x) && x[ind] == v {
fmt.Printf("found %d at ind %d in %v\n", v, ind, x)
} else {
fmt.Printf("%d not found in %v\n", v, x)
}
// Element to search
v = 60
ind = sort.Search(len(x), func(ind int) bool { return x[ind] >= v })
if ind < len(x) && x[ind] == v {
fmt.Printf("found %d at ind %d in %v\n", v, ind, x)
} else {
fmt.Printf("%d not found in %v\n", v, x)
}
}
Output:
found 30 at ind 2 in [10 20 30 40 50]
60 not found in [10 20 30 40 50]
Example 2
// Golang program to demonstrate the
// example of sort.Search() Function
// Searching a list sorted in descending order
package main
import (
"fmt"
"sort"
)
func main() {
x := []int{50, 40, 30, 20, 10}
// Element to search
v := 30
ind := sort.Search(len(x), func(ind int) bool { return x[ind] <= v })
if ind < len(x) && x[ind] == v {
fmt.Printf("found %d at ind %d in %v\n", v, ind, x)
} else {
fmt.Printf("%d not found in %v\n", v, x)
}
// Element to search
v = 60
ind = sort.Search(len(x), func(ind int) bool { return x[ind] <= v })
if ind < len(x) && x[ind] == v {
fmt.Printf("found %d at ind %d in %v\n", v, ind, x)
} else {
fmt.Printf("%d not found in %v\n", v, x)
}
}
Output:
found 30 at ind 2 in [50 40 30 20 10]
60 not found in [50 40 30 20 10]
Golang sort Package »