#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
int high=sizeof(arr)/sizeof(arr[0])-1;
int low=0;
int mid=high/2;
int key;
scanf("%d",&key);
for(mid;mid>low;mid=low+(high-low)/2){
if(key>arr[mid]){
low=mid+1;
}else if(key<arr[mid]){
high=mid-1;
}else if(key==arr[mid]){
printf("%d",mid);
break;
}
}
return 0;
}
学习笔记:要理解算法的本质,不能背代码,用自己的语言把算法实现。反复练反复循环改递归找感觉