折中查找
#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;
}