*자주하는 실수
cout이나 cin 같은 거 쓸 때 맨 위에다가 이거 넣는 거 잊지 말자!!
#include <iostream>
using namespace std;
if 다음에 (조건문) 조건문은 괄호로 감싸주자!!
이원탐색
#include <iostream>
using namespace std;
int BinarySearch(int* a, const int x, const int n) {
int left = 0; int right = n - 1;
while (left <= right) {
int middle = (left + right) / 2;
if (x < a[middle]) right = middle - 1;//범위를 좁혀 왼쪽으로 간다.
else if (x > a[middle]) left = middle + 1;
else return middle;//찾았다.
}
//없다
return -1;
}
int main() {
int List[] = { 1,2,3,4,5,7,9,10 };
cout << BinarySearch(List, 3, 8) << endl;
cout << BinarySearch(List, 5, 8) << endl;
cout << BinarySearch(List, 11, 8) << endl;
}
순환 이원탐색
-return값에 BinarySearch가 또 들어가는 것만 다름
#include <iostream>
using namespace std;
int BinarySearch(int* a, const int x, const int left, const int right) {
//정렬된 배열 a[0],...,a[n-1]에서 x를 탐색한다.
if (left <= right) {
int middle = (left + right) / 2;
if (x < a[middle]) { return BinarySearch(a, x, left, middle - 1); }
else if (x > a[middle]) { return BinarySearch(a, x, middle + 1, right); }
return middle;
}
return -1;
}
int main() {
int List[] = { 1,2,3,4,5,7,9,10 };
cout << BinarySearch(List, 3, 0, 8) << endl;
cout << BinarySearch(List, 5, 0, 8) << endl;
cout << BinarySearch(List, 11,0, 8) << endl;
}
'KAU > C++ 자료구조' 카테고리의 다른 글
다항식의 곱셈(C++ , overloading) (0) | 2022.06.09 |
---|---|
순열 생성 (0) | 2022.06.09 |
선택정렬 (가장 작은 걸 골라서 앞으로) (0) | 2022.06.09 |
자료 구조 배우기 전 이론 (0) | 2022.06.09 |
원형큐를 이용해 카드 정렬하기 (0) | 2022.05.21 |