二分法查找 算法学习笔记

丶灬走出姿态 提交于 2019-11-29 16:31:17

二分法查找 学习笔记

二分法简介

二分法查找,是一种在已经排好顺序的数组中查找特定元素的方法。

这种方法的基本思路如下:

数组a[],所寻找的特定元素x。
1、设3个指针:
l:指向数组第一个数。
h:指向数组中间数(h = (l + r) / 2)。
r:指向数组最后的数。
2、将x与a[h]作比较,
(1) 若a[h] > x :将r指针向前移到h-1;
(2) 若a[h] < x :将l指针向后移到h+1;
3、重新定义h指针:h = (l + r) / 2。
将上述步骤写入循环里,当 l < r - 1 时,退出循环。

主程序如下

        int l, h, r, num[m], x;  //x为特定元素,m为数组大小
        l = 0;
		r = m - 1;
		while (l < r - 1) {
			h = (l + r) / 2;
			if(x == num[h]) {
			    printf("%d", h);
			    return 0;
		    }
		    else if(x > num[h]) {
			    l = h + 1;
		    }
		    else {
			    r = h - 1;
		    }
		}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!