Java의 이진 검색이란 무엇입니까? 그것을 구현하는 방법?



Java의 이진 검색은 정렬 된 배열 내에서 대상 값의 위치를 ​​찾는 검색 알고리즘입니다. 이 기사에서는 예제를 통해 구현하는 방법을 설명합니다.

검색 및 정렬 알고리즘은 인기있는 알고리즘 모든 프로그래밍 언어로. 그것들은 프로그래밍의 기초를 이해하는 기초입니다. 이러한 인기있는 검색 알고리즘 중 하나는 이진 검색입니다. . 이 기사에서는 구현에 대해 모두 설명합니다.

이 기사에서 다루는 주제는 다음과 같습니다.





시작하자!

바이너리 검색이란 무엇입니까?

이진 검색 이다 정렬 된 항목 내에서 대상 값의 위치를 ​​찾는 검색 알고리즘 정렬 . 이진 검색 대상 값을 배열의 중간 요소와 비교합니다. 그것정렬 된 요소 집합에서만 작동합니다. 컬렉션에서 이진 검색을 사용하려면 먼저 정렬해야합니다.



자바 바이너리 검색 프로그램-자바 바이너리 검색-Edureka때 정렬 된 집합에서 작업을 수행하는 데 사용되며, 검색되는 값을 기준으로 반복 횟수를 항상 줄일 수 있습니다. 위의 스냅 샷에서 찾을 수 있습니다. 중간 요소 . 이진 검색의 비유는 배열이 정렬 된 정보를 사용하여 시간 복잡성을 줄이는 것입니다. O (로그 n) .

이진 검색 알고리즘 구현

더 나은 방식으로 이해하기 위해 아래 의사 코드를 살펴 보겠습니다.

절차 binary_search A & larr 정렬 된 배열 n & larr 배열 크기 x & 검색 할 값 & larr 값 낮음 설정 = 1 높음 = n으로 설정하고 높으면 x를 찾을 수 없음

설명:



1 단계: 먼저 x를 중간 요소와 비교하십시오.

2 단계: x가 중간 요소와 일치하면 중간 인덱스를 반환해야합니다.

3 단계 : 그렇지 않으면 x가 중간 요소보다 크면 x는 중간 요소 뒤의 오른쪽 절반 배열에만 놓일 수 있습니다. 따라서 오른쪽 절반을 반복합니다.

4 단계 : 그렇지 않으면 (x가 더 작음) 왼쪽 절반에 대해 반복됩니다.

이것이 주어진 배열에서 요소를 검색하는 방법입니다.

프로젝트 관리의 조달 관리

이제 이진 검색 알고리즘을 재귀 적으로 구현하는 방법을 살펴 보겠습니다. 아래 프로그램은 동일한 방법을 보여줍니다.

재귀 바이너리 검색

public class BinarySearch {// 재귀 바이너리 검색의 Java 구현 // arr [l..h]에 존재하는 경우 x의 인덱스를 반환하고, 그렇지 않으면 반환 -1 int binarySearch (int a [], int l, int h, int x) {if (h> = l) {int mid = l + (h-l) / 2 // 요소가 중간에있는 경우 if (a [mid] == x) return mid // If 요소 mid보다 작 으면 왼쪽 하위 배열에만 존재할 수 있습니다. if (a [mid]> x) return binarySearch (arr, l, mid-1, x) // 그렇지 않으면 요소가 오른쪽 하위 배열에만 존재할 수 있습니다. return binarySearch (arr, mid + 1, h, x)} // 배열에 요소가 없을 때 여기에 도달합니다. return -1} public static void main (String args []) {BinarySearch ob = new BinarySearch () int a [] = {20, 30, 40, 10, 50} int n = a.length int x = 40 int res = ob.binarySearch (a, 0, n-1, x) if (res == -1) System.out .println ( '요소가 존재하지 않음') else System.out.println ( '인덱스에서 찾은 요소'+ res)}}

위의 프로그램을 실행하면 특정 인덱스에있는 요소를 찾습니다.

색인 2에서 찾은 요소

이진 검색의 끝으로 이동합니다. 자바 조. 유익한 정보를 얻고 이해하는 데 도움이 되었기를 바랍니다. .

확인 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 작성했습니다. 우리는이 자바 인터뷰 질문 외에 당신의 여정의 모든 단계에서 당신을 돕기 위해 여기 있습니다. 우리는 Java 개발자가 되고자하는 학생과 전문가를 위해 설계된 커리큘럼을 마련했습니다. 이 과정은 Java 프로그래밍을 시작하고 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

바이너리 검색을 구현하는 데 어려움이있는 경우 , 아래 댓글 섹션에 언급하십시오. 빠른 시일 내에 연락 드리겠습니다.