빠른 시작: Go 언어 기능을 사용하여 이진 검색 알고리즘 구현

王林
풀어 주다: 2023-07-30 10:51:24
원래의
1624명이 탐색했습니다.

빠른 시작: Go 언어 함수를 사용하여 이진 검색 알고리즘 구현

이진 검색 알고리즘(이진 검색)은 효율적인 검색 알고리즘이며 시간 복잡도는 O(log n)입니다. 정렬된 배열을 처리할 때 이진 검색을 사용하면 대상 요소의 위치를 빠르게 찾을 수 있습니다. 이 기사에서는 Go 언어 함수를 사용하여 이진 검색 알고리즘을 구현하고 코드 예제를 제공합니다.

이진 검색 알고리즘의 기본 아이디어는 대상 값을 찾거나 검색 범위가 비어 있을 때까지 대상 값과 배열의 중간 요소 사이의 크기 관계를 비교하여 검색 범위를 좁히는 것입니다.

다음은 이진 검색 알고리즘을 구현하는 Go 언어 함수의 코드 예입니다.

package main import "fmt" // 二分查找函数 func binarySearch(arr []int, target int) int { start := 0 end := len(arr) - 1 for start <= end { mid := (start + end) / 2 // 目标值在数组右侧 if arr[mid] < target { start = mid + 1 } // 目标值在数组左侧 else if arr[mid] > target { end = mid - 1 } // 找到目标值 else { return mid } } // 没有找到目标值 return -1 } func main() { arr := []int{1, 3, 5, 7, 9, 11, 13, 15} target := 9 index := binarySearch(arr, target) if index != -1 { fmt.Println("目标值", target, "在数组中的索引为", index) } else { fmt.Println("目标值", target, "不在数组中") } }
로그인 후 복사

위 코드는 먼저 순서가 지정된 정수 배열arr을 허용하는 binarySearch함수를 정의합니다. code > 및 목표 값target을 매개변수로 사용합니다. 이 함수는 두 개의 변수startend를 사용하여 검색 범위의 시작 및 끝 위치를 나타냅니다.binarySearch函数,该函数接受一个有序整型数组arr和一个目标值target作为参数。函数使用两个变量startend来表示查找范围的起始和结束位置。

然后,在一个循环中,计算中间位置mid,并根据中间元素和目标值之间的大小关系更新startend的值,缩小查找范围。如果中间元素等于目标值,说明找到了目标值,返回其索引。如果查找范围为空,表示未找到目标值,返回-1。

main函数中,定义了一个有序整型数组arr,以及目标值target。调用binarySearch

그런 다음 루프에서 중간 위치 mid를 계산하고 중간 요소와 end사이의 크기 관계에 따라 startend를 업데이트합니다. 대상값 > 값으로 검색 범위를 좁힙니다. 중간 요소가 목표 값과 같으면 목표 값을 찾아 해당 인덱스를 반환합니다. 검색 범위가 비어 있으면 대상 값을 찾을 수 없다는 의미이며 -1이 반환됩니다.

main함수에는 순서가 지정된 정수 배열 arr과 대상 값 target이 정의되어 있습니다. binarySearch함수를 호출하여 이진 검색을 수행하고, 반환된 인덱스 값을 기반으로 해당 출력을 수행합니다. 위의 코드 예제를 통해 Go 언어 함수를 사용하여 이진 검색 알고리즘을 구현하는 방법을 빠르게 배울 수 있습니다. 이 알고리즘은 대규모의 정렬된 데이터를 처리할 때 매우 효율적이며 검색 시간을 크게 줄일 수 있습니다. 실제 응용 프로그램에서는 특정 시나리오에 따라 이진 검색 알고리즘을 유연하게 사용하여 코드 실행 효율성을 향상시킬 수 있습니다.

위 내용은 빠른 시작: Go 언어 기능을 사용하여 이진 검색 알고리즘 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!