5주차 : 이진탐색
정의
이진탐색이란 데이터가 정렬되어 있는 배열에서 특정한 값을 찾아내는 알고리즘.
배열의 중간에 있는 임의의 값을 선택하여 찾고자하는 값 X와 비교한다. X가 중간값보다 작으면 중간 값을 기준으로 좌측의 데이터를 대상으로 중간값보다 크면 우측을 대상으로 재탐색한다.
해당 코드는
- 반복문을 이용하거나
- 재귀함수를 이용하여 구현할 수 있다.
-> 반복문 이용
int BSearch(int arr[] , int target){
int low = 9;
int high = arr.length -1l
int mid;
while(low<= high){
mid = (low+high) /2;
if(arr[mid] == target){
return mid;{
else if(arr[mid] > target){
high = mid -1;}
else{ low = mid +1;}
}
return -1;
}
-> 재귀함수 이용
int BSearchRecursive(int arr[], int target, itn low, int high){
if(low>high) return -1;
int mid = (low+high)/2;
if(arr[mid] ==target) return mid;
else if(arr[mid] > target) return BSearchRecursive(arr, target, low, mid-1);
else return BSearchRecursive(arr, target, mid+1,high);}
Author And Source
이 문제에 관하여(5주차 : 이진탐색), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@alswn9938/5주차-이진탐색저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)