알고리즘/Algorithm Theory

[Algorithm] Binary Search, Two Pointer

래울 2024. 2. 26. 14:09

단순 탐색 : O(N)

이진 탐색 : O(logN), 단 사전에 정렬이 되어 있어야 함.

 

- STL의 binary_search

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
	int arr[] = { 3, 5, 1, 2, 7, 4, 7, 3, 3, 9 };
	sort(arr, arr + 10);
	cout << binary_search(arr, arr + 11, 7);	//true
	return 0;
}

 

 

- Binary Search 구현

#include <iostream>
#include <algorithm>
using namespace std;
int arr[] = { 4, 1, 5, 3, 2, 1, 1, 6 };
int target = 3;
int binary_search(int start, int end)
{
	int mid = 0;
	while (start <= end)
	{
		mid = (start + end) / 2;
		//중앙 검사
		if (arr[mid] == target)
			return mid;

		if (arr[mid] > target)
		{
			end = mid - 1;
		}
		else
		{
			start = mid + 1;
		}
	}
	return -1;
}
int main()
{
	sort(arr, arr + 8);
	for (int i : arr) cout << i << " ";
	cout << "\n";
	int ret = binary_search(0, 7);
	cout << ret << "번 인덱스\n";
	return 0;
}