#include<stdio.h>
#include<stdlib.h>
int input(int *a)
{
int n,i;
printf("enter the no of elements:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("enter the element:");
scanf("%d",a++);
}
return n;
}
int key_input(int *a,int key)
{
int k;
printf("enter the key value which have to be searched in the array of no's provided:");
scanf("%d",&k);
return k;
}
void binary_search(int *a,int n,int key)
{
int low=0;
int high=n-1;
int mid;
while(low<=high)
{
mid=(high+low)/2;
if(key == a[mid])
{
printf("the key:%d is found at location:%d in the array",key,mid);
if(key==a[mid+1])
{
binary_search(a+mid+1,n-mid-1,key);
}
if(key==a[mid-1])
{
binary_search(a,n-mid-1,key);
}
if(key != a[mid-1] || key != a[mid+1])
break;
}
else if(key < a[mid])
high=mid-1;
else if(key>a[mid])
low=mid+1;
}
}
int main()
{
int arr[100];
int n=input(arr);
int key=key_input(arr,n);
binary_search(arr,n,key);
return 0;
}
의 모든 배열 위치를 찾아 C는-있습니다. 키가있는 모든 배열 위치를 찾고 싶습니다. 예를 들어, 입력 4,4,4,4에 대해 키를 4로 지정합니다. 출력에는 배열 (0-3)의 모든 위치가 포함되어야하지만 코드에 무엇이 잘못되었는지는 알 수 없으며 무한히 실행됩니다. 누군가 나를 도와주세요.이진 검색이 내가 이진 검색을 위해 작성한 코드입니다 키
, 올바로 수행 코드를 들여 쓰기하는 방법 제발, 제발하십시오. 그것은 쓰여지거나 적어도 불필요하게 읽기가 힘들다. –
배열을'key_input()'에 전달한 다음 왜 사용하지 않습니까? 배열은 함수와 관련이 없으므로 전달하면 안됩니다. –
바이너리 검색은 키가있는 위치의 범위를 호출 코드에 어떻게보고합니까? 구조체가 반환 될 것으로 예상되었거나 ('struct range {int lo; int hi;}') 또는'binary_search()'의 코드에 의해 설정된 두 개의 포인터 인수를 기대했을 것입니다. –