2분 검색의 순환 버전과 귀속 버전
코드 및 테스트 함수:
#include
using namespace std;
//
int BinaryNorRec(int array[], int size, int key)
{
int mid = -1;
int left = 0;
int right = size - 1;
while (left <= right)
{
mid = (left + right) / 2;
if (array[mid] == key)
{
return mid;
}
else if (array[mid] < key)
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
if (left > right)
return -1;
}
//
int BinaryRec(int arr[], int left, int right, int key)
{
int mid = -1;
if (left <= right)
{
mid = (left + right) / 2;
if (arr[mid] == key)
return mid;
else if (arr[mid] < key)
return BinaryRec(arr, mid + 1, right, key);
else
return BinaryRec(arr, left, mid - 1, key);
}
return mid;
}
//
void TestBinaryRec()
{
int array[] = { 4, 5, 6, 7, 8, 9, 10, 11 };
int size = sizeof(array) / sizeof(array[0]);
cout << "find: 4 " << BinaryRec(array,0, size-1, 4) << endl;
cout << "find: 5 " << BinaryRec(array,0, size-1, 5) << endl;
cout << "find: 6 " << BinaryRec(array,0, size-1, 6) << endl;
cout << "find: 7 " << BinaryRec(array,0, size-1, 7) << endl;
cout << "find: 8 " << BinaryRec(array,0, size-1, 8) << endl;
cout << "find: 9 " << BinaryRec(array,0, size-1, 9) << endl;
cout << "find: 10 " << BinaryRec(array,0, size-1, 10) << endl;
cout << "find: 11 " << BinaryRec(array,0, size-1, 11) << endl;
cout << "find: 12 " << BinaryRec(array,0, size-1, 12) << endl;
cout << "find: 3 " << BinaryRec(array,0, size-1, 3) << endl;
cout << "find: -1 " << BinaryRec(array,0, size-1, -1) << endl;
//find: 4 0
//find: 5 1
//find: 6 2
//find: 7 3
//find: 8 4
//find: 9 5
//find: 10 6
//find: 11 7
//find: 12 -1
//find: 3 -1
//find: -1 -1
}
//
void TestBinarySearch()
{
int array[] = { 4, 5, 6, 7, 8, 8, 9, 10, 11 };
int size = sizeof(array) / sizeof(array[0]);
cout << "find: 4 " << BinaryNorRec(array, size, 4) << endl;
cout << "find: 5 " << BinaryNorRec(array, size, 5) << endl;
cout << "find: 6 " << BinaryNorRec(array, size, 6) << endl;
cout << "find: 7 " << BinaryNorRec(array, size, 7) << endl;
cout << "find: 8 " << BinaryNorRec(array, size, 8) << endl;
cout << "find: 9 " << BinaryNorRec(array, size, 9) << endl;
cout << "find: 10 " << BinaryNorRec(array, size, 10) << endl;
cout << "find: 11 " << BinaryNorRec(array, size, 11) << endl;
cout << "find: 12 " << BinaryNorRec(array, size, 12) << endl;
cout << "find: 3 " << BinaryNorRec(array, size, 3) << endl;
cout << "find: -1 " << BinaryNorRec(array, size, -1) << endl;
//
//find: 4 0
//find: 5 1
//find: 6 2
//find: 7 3
//find: 8 4
//find: 9 5
//find: 10 6
//find: 11 7
//find: 12 -1
//find: 3 -1
//find: -1 -1
}
int main()
{
TestBinarySearch();
cout << endl; //
TestBinaryRec();
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
브라우저를 통해서만 Apple Music 재생(해당 1)Apple Music의 JavaScript 라이브러리 "Music Kit JS"를 사용하여 브라우저에서 Apple Music을 재생합니다.화면을 완성하는 게 이런 느낌이야.예술 작품과 노래에 대한 정보를 표시할 수도...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.