题目:给定从小到大排序好的数列,输入某个你想查找的数从该数列确定它的存在


原理:通过数组下标

例如:给定数组arr[]={1,2...n}

令a=0,b=sizeof(arr)/sizeof(arr[0])-1,即取到该数列最小值arr[a],最大值arr[b].

然后令int c=(a+b)/2,进行对半取,通过arr[c]和要找的数比较,确认arr[c]是大了还是小了。

如果大了,则b=c-1;小了,则a=c+1。

依次进行下去


比如下面就是一个在1-10的数组中找目标数代码

简易二分(折半)查找_C语言入门



突然发现自己对循环理解不够,程序从上往下走,if判断不满足直接跳过后面的{}继续下去(不是跳出循环),比如第三个else,如果不满足相等,不会打印  找到了,下标是:

直接返回while 继续判断。