------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
二分法查找
二分法思想是取中,比较 :
1)求有序序列arr 的中间位置mid 。 2 )k 为要查找的数字。
若arr[mid] == k ,查找成功;
若arr[mid] > k ,在前半段中继续进行二分查找;
若arr[mid] < k ,则在后半段中继续进行二分查找。
假如有一组数为3、12、24、36、55、68、75、88 要查给定的值k=24 。可设三个变量low、mid 、high 分别指向数据的上界,中间和下界,mid= (low+high )/2.
1)开始令low=0 (指向3 ),high=7 (指向88 ),则mid=3 (指向36 )。因为k<mid ,故应在前半段中查找。
2 )令新的high=mid-1=2 (指向24 ),而low=0 (指向3 )不变,则新的mid=1 (指向12)。 此时k>mid ,故确定应在后半段中查找。
3 )令新的 low=mid+1=2 (指向24 ),而high=2 (指向24 )不变,则新的mid=2 ,此时k=arr[mid] ,查找成功。 如果要查找的数不是数列中的数,例如k=25 ,当第四次判断时,k>mid[2] ,在后边半段查找,令low=mid+1 ,即low=3(指向36),high=2 (指向24 )出现low>high 的情况,表示查找不成功。