在C语言中什么是二分法

如题所述

举个例子吧,有一组有序数字,要查找某一数字,判断中间数字是否符合条件,不符合再从中间分成两半,选择符合的一半,再判断再分,直到找到或者不能再分为止。
注意一定是有序的,不能用于无序的数据查找。这样每次都砍去一半,时间复杂度仅为lg(n),查找非常快。追问

在1~10中找5,10/2=5,这是算在1~5中还是5~10中?

追答

你先判断与中间的那个数是否符合,不符合肯定在两侧。明白吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-12
与数学类似,将数据分为两类,判断解在那一类,再分,在判断,直到找到为止追问

在1~10中找5,10/2=5,这是算在1~5中还是5~10中?

追答

在判断时有个分界例如1~mid,mid+1~10,
判断时首先判断是否等于mid,若等于,结束
在判断大小,若大于mid,则在mid+1~10之间,
否则在1~mid-1之间

第2个回答  推荐于2017-12-16
每次判定都能决定解在两个区间中的哪一个。比如顺序表二分查找
对于[m,n]只要判定(m+n)/2的元素与待查找元素即可确定要查找的在哪个子区间里追问

在1~10中找5,10/2=5,这是算在1~5中还是5~10中?

本回答被网友采纳
第3个回答  2011-09-13

就是不断取半 逐渐接近目标数值
相似回答