0 ///欢迎批评指正
1 #include <stdio.h>
2
3 int a[100];
4
5 int search(int start,int end,double distinction){
6 int mid;
7 if(distinction > a[end - 1])
8 return end - 1;
9 if(distinction < a[start])
10 return start;
11 while(1){
12 mid = (start + end) / 2;
13 if(a[mid - 1] < distinction && a[mid] > distinction)
14 return ((a[mid] - distinction) >= (distinction - a[mid - 1])) ? mid - 1 : mid;
15 if(distinction > a[mid]){///(a[start] + a[end]) / 2.0 >
16 start = mid;
17 }else if(distinction < a[mid]){
18 end = mid;
19 }else{
20 return mid;
21 }
22 }
23 }
24 int main(void){
25 int n;
26 double m;
27 printf("输入数组元素个数:\n");
28 scanf("%d",&n);
29 for(int i = 0; i < n; i++)
30 scanf("%d",&a[i]);
31 while(scanf("%lf",&m)!=0){
32 printf("%d\n",search(0,n,m));
33 }
34
35 return 0;
36 }