#include <iostream>
using namespace std;
int main()
{
int arr[] = {2, 5, 8, 12, 17, 20, 25};
int target = 20;
int l = 0;
int r = 6;
while(l <= r)
{
int mid = (l + r) / 2;
cout << "l=" << l
<< " r=" << r
<< " mid=" << mid
<< " value=" << arr[mid]
<< endl;
if(arr[mid] == target)
{
cout << "찾았다!" << endl;
break;
}
else if(arr[mid] < target)
{
// 빈칸
}
else
{
// 빈칸
}
}
}
arr[mid] < target 이면
왜 l = mid + 1 인가?
arr[mid] > target 이면
왜 r = mid - 1 인가?
-----------------------------------------------------
#include <iostream>
using namespace std;
int main()
{
int arr[] = {1,3,5,7,9,11,13,15,17};
int target = 15;
int l = ________;
int r = ________;
while(________)
{
int mid = ________;
if(arr[mid] == target)
{
cout << mid;
break;
}
else if(arr[mid] < target)
{
________;
}
else
{
________;
}
}
}
--------------------------------------------
#include <iostream>
using namespace std;
int main()
{
int arr[] = {1,3,5,7,9,11,13,15,17};
int target = 15;
int l = 0;
int r = 8;
while(l <= r)
{
int mid = (l + r) / 2;
if(arr[mid] == target)
{
cout << mid;
break;
}
else if(arr[mid] < target)
{
l = mid;
}
else
{
r = mid;
}
}
}
이 코드는 왜 무한루프가 발생할 수 있을까?
---------------------------------------
#include <iostream>
using namespace std;
int main()
{
int arr[] = {2,4,6,8,10,12,14,16,18,20};
int target;
cin >> target;
// 여기에 이분탐색 작성
}
찾으면 인덱스 출력
없으면 -1 출력
To embed this project on your website, copy the following code and paste it into your website's HTML: