菜鸟求助,关于“二分法”
| 我自学老谭的《C程序设计》学到第六章,有一道课后习题让用“二分法”编一个程序, 本人没上过高中,不明白“二分法”是什么意思,上google查了一下,我现在是这样理解的: 假如让我找1和3两个正整数中间的数,我就用(1+3)/2得到2,假如让我找1-9中间的数,我就用(1+9)/2,得到5,这就是用了“二分法”,请问我的理解对不对呢?谢谢!!! |
| 我自学老谭的《C程序设计》学到第六章,有一道课后习题让用“二分法”编一个程序, 本人没上过高中,不明白“二分法”是什么意思,上google查了一下,我现在是这样理解的: 假如让我找1和3两个正整数中间的数,我就用(1+3)/2得到2,假如让我找1-9中间的数,我就用(1+9)/2,得到5,这就是用了“二分法”,请问我的理解对不对呢?谢谢!!! |
2006-04-06 07:54
2006-04-06 08:41
二楼说的是,要排好序的才行,比如说已经从小到大排列好了,如果给的数比中间数大,那么就在右边找,反之左边找,重复这个过程.
2006-04-06 10:42
2006-04-06 11:36
并不需要指针的知识
正如上楼所说,得是一个排好序的数组才可以用二分法。
排序 升序or降序都无所谓
二分法的好处是减少查找所需数的次数,降低编译时间
列子:数组a[5]={1,2,3,4,5};
用二分法查2
设两个值high=4, low=0 mid=(high+low)/2 a[mid]=3
此时发现2<a[mid];
则low=0不变,high=mid;
就按这个方法逐步寻找;
这就是二分法。
上面是我的看法,如有部队,麻烦指正,谢谢
2006-04-06 11:48
2006-10-22 17:10
2006-10-22 17:10
2006-10-22 17:24
2006-10-22 18:46
2006-10-22 20:57