묻공러
[C++ 자/알 Note] 이진 탐색
묻공러
묻지마공부
묻공러
전체
오늘
어제
  • 분류 전체보기 (487)
    • C (54)
      • [코드조선] C 핵심 (35)
      • [언어본색] C 기초 (19)
    • C++ (72)
      • [루키스] C++ (9)
      • [루키스] 콜백함수 (6)
      • [루키스] STL (8)
      • [루키스] Modern C++ (11)
      • [노코프] C++ (10)
      • [노코프] Tips (16)
      • [일지] C++ (12)
    • 자료구조 & 알고리즘 (50)
      • [코드조선] C 자료구조 & 알고리즘 (6)
      • [합격자되기] C++ 코딩테스트 (12)
      • [루키스] C++ 자료구조 & 알고리즘 (32)
    • CS (69)
      • [널널한 개발자] CS 개론 (19)
      • [혼자 공부하는] 컴퓨터 구조 (16)
      • [혼자 공부하는] 운영체제 (18)
      • [널널한 개발자] 네트워크 (16)
    • 게임 그래픽스 (46)
      • [전북대] OpenGL (25)
      • [일지] DirectX (21)
    • 게임 엔진 (124)
      • [코드조선] 언리얼 (53)
      • [코드조선] 언리얼 데디서버 (8)
      • [일지] 언리얼 (59)
      • [일지] 언리얼 (2) (3)
      • 유니티 (1)
    • 게임 서버 (17)
    • 게임 수학 & 물리 (19)
      • 게임 수학 (12)
      • 게임 물리 (7)
    • GIT & GITHUB (4)
    • 영어 (18)
      • [The Outfit] 대본 공부 (11)
      • the others (7)
    • 그 외 (14)
      • In (5)
      • Out (5)
      • Review (4)

인기 글

최근 글

hELLO · Designed By 정상우.
자료구조 & 알고리즘/[루키스] C++ 자료구조 & 알고리즘

[C++ 자/알 Note] 이진 탐색

2025. 1. 18. 14:34

이진 탐색 개념

정렬된 배열 상태에서

처음부터 순회하며 탐색하는 방식이 아닌

재귀적으로 절반을 기준으로 좌/우 중 하나를 선택하여

탐색하는 것을 이진탐색이라고 한다

따라서 시간복잡도는 O(logN)이 걸린다

 

이진 탐색의 문제

배열로 이진탐색을 구현하는 경우는

삽입, 삭제 시 매우 비효율적이다

정렬된 연결리스트는 임의 접근이 불가능하기에

이진탐색 사용이 불가능하다

 

이러한 문제를 해결하기 위해서

배열이나 연결리스트가 아닌 새로운 자료구조인

트리 구조를 이진탐색과 함께 이용한다

 

이진 탐색 구현 with 배열

vector<int> numbers;

void BinarySearch(int N)
{
	int left = 0;
	int right = (int)numbers.size() - 1;

	while (left <= right)
	{
		cout << "탐색 범위: " << left << "~" << right << endl;

		int mid = (left + right) / 2;

		if (N < numbers[mid])
		{
			cout << N << " < " << numbers[mid] << endl;
			right = mid - 1;
		}
		else if (N > numbers[mid])
		{
			cout << N << " > " << numbers[mid] << endl;
			left = mid + 1;
		}
		else
		{
			cout << "찾음!" << endl;
			break;
		}
	}

}
저작자표시 비영리 변경금지 (새창열림)

'자료구조 & 알고리즘 > [루키스] C++ 자료구조 & 알고리즘' 카테고리의 다른 글

[C++ 자/알 Note] 레드블랙트리 - 개념 및 삽입  (0) 2025.01.19
[C++ 자/알 Note] 이진탐색트리  (0) 2025.01.19
[C++ 자/알 Note] A* 길찾기 알고리즘  (0) 2025.01.18
[C++ 자/알 Note] 우선순위 큐 구현  (0) 2025.01.13
[C++ 자/알 Note] 힙 이론  (0) 2025.01.13
'자료구조 & 알고리즘/[루키스] C++ 자료구조 & 알고리즘' 카테고리의 다른 글
  • [C++ 자/알 Note] 레드블랙트리 - 개념 및 삽입
  • [C++ 자/알 Note] 이진탐색트리
  • [C++ 자/알 Note] A* 길찾기 알고리즘
  • [C++ 자/알 Note] 우선순위 큐 구현
묻공러
묻공러
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.