折中查找
#include<stdio.h>
#define SIZE 50
int main () { //对于排好顺序的数组进行折中查找
int i;
int m, n;
int mid, k;
char o;
int a[SIZE];
for(i = 0; i < SIZE; i ++)
a[i] = i;
/*
n 为左边界,m 为右边界
*/
m = SIZE - 1; //m为a数组的长度-1
n = 0;
mid = (m+n)/2; //中间值
scanf("%d", &k); //输入需要查找的数在 0 到 (SIZE-1) 之间
while(1){
if(k == a[mid]){
printf("%d", mid); //输出下标
break;
} else if(k < a[mid]){
m = mid - 1;
mid = (m + n) / 2;
} else {
n = mid+1;
mid = (n + m) / 2;
}
}
return 0;
}