在顺序数组中找一个数,得到它是第几个数
用折半查找法
int arr[]={1,2,3,4,5,6,7,8,9,10,11,12};
int low=0;//最小的下标
int hight=len-1;//最大的下标=长度-1,因为下标是从0开始,长度从1开始;
int mid;//中间下标
mid=(low+hight)/2;//中间下标等于最低加最高下标再除以2
eg:
找12这个数,起初low=0,hight=11;
判断mid=(0+11)/5=5下标的数是不是12
arr[mid]=arr[5]=6//不是12;
因为12比6大,那么12这个数一定在arr[mid]的右边
所以让low=mid+1=6;
再判断mid=(6+12)/2=9下标的数是不是12
arr[mid]=arr[9]=10//还不是12
因为12比10还大,那么12这个数一定还在arr[mid]的右边
所以再让low=mid+1=10;
再判断mid=(10+12)/2=11下标的数是不是12
arr[mid]=arr[11]=12//是12,那么此时的mid就是12这个数的下标
eg:
找4这个数起初low=0,hight=12
判断mid=(0+11)/2=5下标的数是不是4
arr[mid]=arr[5]=6//不是4;
因为4比6小,那么这个数一定在arr[mid]的左边
所以让hight=mid-1=4
再判断mid=(0+4)/2=2下标的数是不是4
arr[mid]=arr[2]=3//不是4
因为4比3大,那么4这个数一定在arr[mid]的右边
所以让low=mid+1=4;
再判断mid=(3+4)/2=3下标的数是不是3
arr[mid]=arr[3]=4//是4,那么此时的mid就是4这个数的下标,
#include<stdio.h>
int Show(int arr[],