C 언어는 2분 찾기 그룹의 키 값(귀속 및 비귀속)을 실현합니다.
7020 단어 二分查找
비귀속 코드는 다음과 같습니다.
#include <stdio.h>
int binsearch(int arr[], int len, int src)
{
int idx = 0,l = 0, r = len-1;
idx = (l + r)/2;
while(src != arr[idx])
{
if(src < arr[idx])
{
r = idx - 1;
}
else
{
l = idx + 1;
}
if(l > r)
{
idx = -1;
break;
}
idx = (l + r)/2;
}
return idx;
}
int main()
{
int arrar[12] = {1,3,4,6,7,8,9,20,100,101,200};
int len = 11;
int src;
int result;
scanf("%d", &src);
result = binsearch(arrar, len, src);
printf("Result : %d
", result);
return 0;
}
귀속 코드는 다음과 같습니다.
#include <stdio.h>
int binsearch(int arr[], int l, int r, int src)
{
int result = 0;
int mid = (l + r)/2;
if (l < r){
if(src == arr[mid])
{result = mid;}
else if(src > arr[mid])
{result = binsearch(arr, mid + 1, r , src);}
else
{result = binsearch(arr,l ,mid - 1, src);}
}
else if (l == r)
{
result = (src == arr[l] ? l : -1);
}
else
{
result = -1;
}
return result;
}
int main()
{
int arra[10] = {1,6,9,19,20,30,100,400,1000,1001};
int len = 10;
int result, src;
printf("input a num: ");
scanf("%d" ,&src);
result = binsearch(arra, 0, len, src);
printf("Result: %d
",result);
return 0;
}
알고리즘에 대해 이제 막 입문했기 때문에 벽돌을 찍는 것을 환영합니다.