Files
suanfa/public/c/ch2/student/halfsearch.c
T
2026-06-15 09:00:38 +08:00

41 lines
776 B
C

#include<stdio.h>
void Search(int a[],int n,int x,int*i,int*j){
int start=0,end=n-1;
*i=-1;
*j=-1;
while(start<end){
int mid=start+(end-start)/2;
if(a[mid]==x){
*i=mid;
*j=mid;
}
else if(a[mid]<x){
start=mid+1;
*i=mid;
}
else {
end=mid-1;
*j=mid;
}
}
}
int main(){
int a[]={2,4,6,8,9,10,12,13};
int x=8;
int n=sizeof(a)/sizeof(a[0]);
int i,j;
Search(a,n,x,&i,&j);
if(i==-1&&j==-1){
printf("未找到%d的信息\n",x);
}
else if(i==j){
printf("目标元素%d位于%d\n",x,i);
}
else{
printf("未找到目标元素%d的值\n",x);
printf("小于%d的最大元素位置%d\n",x,i);
printf("大于%d的最小元素位置%d\n",x,j);
}
}